|
@@ -4,6 +4,7 @@ import com.iamberry.rst.core.cm.CompanyInfo;
|
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
import com.iamberry.rst.core.cm.StoreInfo;
|
|
|
+import com.iamberry.rst.core.order.AfterrulesInfo;
|
|
|
import com.iamberry.rst.core.order.OrderBatch;
|
|
|
import com.iamberry.rst.core.order.OrderCorrectInfo;
|
|
|
import com.iamberry.rst.core.order.ProductColor;
|
|
@@ -17,12 +18,10 @@ import com.iamberry.rst.faces.order.EfastOrderService;
|
|
|
import com.iamberry.rst.faces.order.LogisticsInfoService;
|
|
|
import com.iamberry.rst.faces.order.OrderBatchService;
|
|
|
import com.iamberry.rst.faces.product.ProductService;
|
|
|
-import com.iamberry.rst.utils.AdminUtils;
|
|
|
-import com.iamberry.rst.utils.ExcelUtil;
|
|
|
-import com.iamberry.rst.utils.GenerateKeyUtil;
|
|
|
-import com.iamberry.rst.utils.StitchAttrUtil;
|
|
|
+import com.iamberry.rst.utils.*;
|
|
|
import com.iamberry.wechat.tools.ResponseJson;
|
|
|
import net.sf.json.JSONArray;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.*;
|
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
@@ -70,7 +69,8 @@ public class AdminSalesOrderController {
|
|
|
private GenerateKeyUtil generateKeyUtil ;
|
|
|
@Autowired
|
|
|
private LogisticsInfoService logisticsInfoService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private KuaiDi100 kuaidi100;
|
|
|
/**
|
|
|
* 分页查询订单列表信息
|
|
|
* @param request
|
|
@@ -1382,5 +1382,133 @@ public class AdminSalesOrderController {
|
|
|
}
|
|
|
return ResponseJson.getSUCCESS();
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 根据店铺id查询售后规则
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequiresPermissions("salesOrder:select:salesOrder")
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/getAfterrulesInfo")
|
|
|
+ public ModelAndView getAfterrulesInfo(HttpServletRequest request, Integer salesId) {
|
|
|
+ ModelAndView mv = new ModelAndView("order/afterrules_info");
|
|
|
+ if(salesId == null){
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+ //查询订单信息
|
|
|
+ SalesOrder salesOrder = salesOrderService.getSalesOrderById(salesId);
|
|
|
+ if(salesOrder == null){
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+ if(salesOrder.getSalesStoreId() == null){
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+ //查询售后规则
|
|
|
+ AfterrulesInfo afterrulesInfo = salesOrderService.getAfterrulesInfo(salesOrder.getSalesStoreId());
|
|
|
+ if(afterrulesInfo == null){//等于空则查询通用售后规则
|
|
|
+ afterrulesInfo = salesOrderService.getAfterrulesInfo(0);
|
|
|
+ }
|
|
|
+ //获取签收时间(如果当前日期距离下单日期 未超过7天,则将下单日期当做签收日期;如果当前日期距离下单日期 超过7天,将通过快递100拉取物流单号的签收日期,如果获取到了,就按照快递100的签收日期计算;若未获取到签收日期,则通过:出库日期(若出库日期为空,则取下单日期)+3天当做签收日期。)
|
|
|
+ //当前时间减订购时间
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date dateReceipt = new Date();
|
|
|
+ long diff = new Date().getTime() - salesOrder.getSalesSalesTime().getTime();
|
|
|
+ long diffDays = diff / (24 * 60 * 60 * 1000);
|
|
|
+ if(diffDays < 7){
|
|
|
+ dateReceipt = salesOrder.getSalesSalesTime();
|
|
|
+ }else{
|
|
|
+ //通过快递100获取签收时间
|
|
|
+ if(!StringUtils.isEmpty(salesOrder.getSalesPostFirm()) && !StringUtils.isEmpty(salesOrder.getSalesPostNum())) {
|
|
|
+ JSONObject rst = kuaidi100.getExpressInfo(salesOrder.getSalesPostFirm(), salesOrder.getSalesPostNum());
|
|
|
+ if (rst.has("state") && rst.getInt("state") == 3) { //当快递状态为已签收的时候
|
|
|
+ JSONArray JSONArray = rst.getJSONArray("data");
|
|
|
+ JSONObject JSONObjects = JSONArray.getJSONObject(0);
|
|
|
+ try {
|
|
|
+ dateReceipt = format.parse(JSONObjects.getString("time"));
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }else{//若未获取到签收日期,则通过出库日期(若出库日期为空,则取下单日期)+3天当做签收日期
|
|
|
+ Calendar rightNow = Calendar.getInstance();
|
|
|
+ if(salesOrder.getSalesDeliverTime() == null){
|
|
|
+ rightNow.setTime(salesOrder.getSalesSalesTime());
|
|
|
+ }else{
|
|
|
+ rightNow.setTime(salesOrder.getSalesDeliverTime());
|
|
|
+ }
|
|
|
+ rightNow.add(Calendar.DAY_OF_YEAR,3);
|
|
|
+ dateReceipt = rightNow.getTime();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断是否符合售后条件
|
|
|
+ //当前时间减去签收时间获取使用天数
|
|
|
+ long signTime = new Date().getTime() - dateReceipt.getTime();
|
|
|
+ long useTime = diff / (24 * 60 * 60 * 1000);
|
|
|
+ Integer state;
|
|
|
+ Integer end;
|
|
|
+ //是否符合无理由退货
|
|
|
+ JSONObject returnReason = JSONObject.fromObject(afterrulesInfo.getReturnReason());
|
|
|
+ state = returnReason.getInt("state");
|
|
|
+ end = returnReason.getInt("end");
|
|
|
+ if(end == 0){//如果结束时间等于0,表示没有结束时间,默认为大于使用时间;
|
|
|
+ end = (int)useTime+1;
|
|
|
+ }
|
|
|
+ if(useTime > state && useTime < end){
|
|
|
+ afterrulesInfo.setIsReturnReason(1);
|
|
|
+ }else{
|
|
|
+ afterrulesInfo.setIsReturnReason(2);
|
|
|
+ }
|
|
|
+ //是否符合质量问题退货期
|
|
|
+ JSONObject qualityPeriod = JSONObject.fromObject(afterrulesInfo.getQualityPeriod());
|
|
|
+ state = qualityPeriod.getInt("state");
|
|
|
+ end = qualityPeriod.getInt("end");
|
|
|
+ if(end == 0){//如果结束时间等于0,表示没有结束时间,默认为大于使用时间;
|
|
|
+ end = (int)useTime+1;
|
|
|
+ }
|
|
|
+ if(useTime > state && useTime < end){
|
|
|
+ afterrulesInfo.setIsQualityPeriod(1);
|
|
|
+ }else{
|
|
|
+ afterrulesInfo.setIsQualityPeriod(2);
|
|
|
+ }
|
|
|
+ //是否符合质量问题退货期
|
|
|
+ JSONObject warrantyProblem = JSONObject.fromObject(afterrulesInfo.getWarrantyProblem());
|
|
|
+ state = warrantyProblem.getInt("state");
|
|
|
+ end = warrantyProblem.getInt("end");
|
|
|
+ if(end == 0){//如果结束时间等于0,表示没有结束时间,默认为大于使用时间;
|
|
|
+ end = (int)useTime+1;
|
|
|
+ }
|
|
|
+ if(useTime > state && useTime < end){
|
|
|
+ afterrulesInfo.setIsWarrantyProblem(1);
|
|
|
+ }else{
|
|
|
+ afterrulesInfo.setIsWarrantyProblem(2);
|
|
|
+ }
|
|
|
+ //是否符合质量问题-免费维修期
|
|
|
+ JSONObject governancePeriod = JSONObject.fromObject(afterrulesInfo.getGovernancePeriod());
|
|
|
+ state = governancePeriod.getInt("state");
|
|
|
+ end = governancePeriod.getInt("end");
|
|
|
+ if(end == 0){//如果结束时间等于0,表示没有结束时间,默认为大于使用时间;
|
|
|
+ end = (int)useTime+1;
|
|
|
+ }
|
|
|
+ if(useTime > state && useTime < end){
|
|
|
+ afterrulesInfo.setIsGovernancePeriod(1);
|
|
|
+ }else{
|
|
|
+ afterrulesInfo.setIsGovernancePeriod(2);
|
|
|
+ }
|
|
|
+ //是否符合付费维修
|
|
|
+ JSONObject payRepair = JSONObject.fromObject(afterrulesInfo.getPayRepair());
|
|
|
+ state = payRepair.getInt("state");
|
|
|
+ end = payRepair.getInt("end");
|
|
|
+ if(end == 0){//如果结束时间等于0,表示没有结束时间,默认为大于使用时间;
|
|
|
+ end = (int)useTime+1;
|
|
|
+ }
|
|
|
+ if(useTime > state && useTime < end){
|
|
|
+ afterrulesInfo.setIsPayRepair(1);
|
|
|
+ }else{
|
|
|
+ afterrulesInfo.setIsPayRepair(2);
|
|
|
+ }
|
|
|
|
|
|
+ mv.addObject("afterrulesInfo", afterrulesInfo);
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
}
|