1
0
Quellcode durchsuchen

对比支付单模块优化

hj123456 vor 3 Jahren
Ursprung
Commit
749daca3b6

+ 6 - 12
kmall-admin/src/main/java/com/kmall/admin/controller/compared/PayOrderInfoController.java

@@ -25,6 +25,8 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+
 
 /**
  * Controller
@@ -214,19 +216,11 @@ public class PayOrderInfoController {
 
     @RequestMapping("/comparedTime/{comparedDate}")
     @ResponseBody
-    public R comparedTime( @PathVariable("comparedDate") String comparedDate) {
-
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(comparedDate)) {
-            try {
-                comparedDate = new String(comparedDate.getBytes(ISO), UTF);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            comparedDate = DateUtils.getDate(comparedDate);
-        }
-
+    public R comparedTime(@PathVariable("comparedDate") String comparedDate) {
         try {
-            String returnMsg = payOrderInfoService.comparedTime(comparedDate);
+            Map<String, Object> params = new HashMap<>();
+            params.put("comparedDate",comparedDate);
+            String returnMsg = payOrderInfoService.comparedTime(params);
             return R.ok().put("msg",returnMsg);
         } catch (Exception e) {
             e.printStackTrace();

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/dao/MallPaymentOrderDataDao.java

@@ -25,6 +25,6 @@ public interface MallPaymentOrderDataDao extends BaseDao<MallPaymentOrderDataEnt
 
     List<MallPaymentOrderDataEntity> queryListByOrderSn(@Param("list") List<String> orderSnList);
 
-    List<MallPaymentOrderDataEntity> queryListTime(String comparedDate);
+    List<MallPaymentOrderDataEntity> queryListTime(Map<String, Object> params);
 
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/compared/PayOrderInfoDao.java

@@ -6,6 +6,7 @@ import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Dao
@@ -23,5 +24,9 @@ public interface PayOrderInfoDao extends BaseDao<PayOrderInfoEntity> {
      */
     List<PayOrderInfoEntity> queryNoComparedOrder(@Param("comparedDate") String comparedDate);
 
+    List<PayOrderInfoEntity> queryTimeAndPayType(Map map);
+
     void updateBatch(List<PayOrderInfoEntity> payOrderInfoEntities);
+
+    PayOrderInfoEntity queryByMerchOrderSn(String merchOrderSn);
 }

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/service/compared/PayOrderInfoService.java

@@ -97,5 +97,5 @@ public interface PayOrderInfoService {
      * @param comparedDate
      * @return
      */
-    String comparedTime(String comparedDate);
+    String comparedTime(Map<String, Object> params);
 }

+ 63 - 58
kmall-admin/src/main/java/com/kmall/admin/service/impl/compared/PayOrderInfoServiceImpl.java

@@ -270,35 +270,35 @@ public class PayOrderInfoServiceImpl implements PayOrderInfoService {
     }
 
     @Override
-    public String comparedTime(String comparedDate) {
+    public String comparedTime(Map<String, Object> params) {
+        String comparedDate = params.get("comparedDate").toString();
         String msg = null;
         if (!StringUtils.isNotEmpty(comparedDate)) {
             throw new RRException("日期不能为空!");
         }
-        List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList = mallPaymentOrderDataDao.queryListTime(comparedDate);
-        List<PayOrderInfoEntity> payOrderInfoEntityList = payOrderInfoDao.queryNoComparedOrder(comparedDate);
+        List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList = mallPaymentOrderDataDao.queryListTime(params);
+        List<PayOrderInfoEntity> payOrderInfoEntityList = payOrderInfoDao.queryTimeAndPayType(params);
         if (mallPaymentOrderDataEntityList.size() == 0) {
             msg = "支付订单详情暂无【" + comparedDate + "】数据";
             return msg;
         }
-        if (payOrderInfoEntityList.size()>0) {
-            msg = "支付单对比详情【" + comparedDate + "】数据已同步,请勿重复操作!";
-            return msg;
-        }
-        comparedTime(mallPaymentOrderDataEntityList);
+//        if (payOrderInfoEntityList.size()>0) {
+//            msg = "支付单对比详情【" + comparedDate + "】数据已同步,请勿重复操作!";
+//            return msg;
+//        }
+        comparedTime(mallPaymentOrderDataEntityList,payOrderInfoEntityList);
         msg = "日期【" + comparedDate + "】数据同步成功!";
         return msg;
     }
 
-    private void comparedTime(List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList) {
+    private void comparedTime(List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList,List<PayOrderInfoEntity> payOrderInfoEntityList) {
 
         List<PayOrderInfoEntity> insertList = new ArrayList<>();
 
-        if(mallPaymentOrderDataEntityList != null && mallPaymentOrderDataEntityList.size() > 0){
-
+        if (mallPaymentOrderDataEntityList != null && mallPaymentOrderDataEntityList.size() > 0) {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             SysUserEntity userEntity = ShiroUtils.getUserEntity();
-            for(MallPaymentOrderDataEntity payOrderDto : mallPaymentOrderDataEntityList){
+            for (MallPaymentOrderDataEntity payOrderDto : mallPaymentOrderDataEntityList) {
                 String payFlag = payOrderDto.getPayFlag();
                 String timeStr = payOrderDto.getTimeStr();
                 String outTradeNo = payOrderDto.getOutTradeNo();
@@ -307,62 +307,67 @@ public class PayOrderInfoServiceImpl implements PayOrderInfoService {
                 String refundMoney = payOrderDto.getRefundMoney();
                 //微信退款金额
                 String applyRefundAmount = payOrderDto.getApplyRefundAmount();
-                if(Dict.payFlag.item_alipay.getItem().equals(payFlag)){
+                if (Dict.payFlag.item_alipay.getItem().equals(payFlag)) {
                     String style = payOrderDto.getPayType();
-                    if(style == null){
+                    if (style == null) {
                         continue;
                     }
-                    if( !style.equals("在线支付") && !style.equals("退款(交易退款)")){
+                    if (!style.equals("在线支付") && !style.equals("退款(交易退款)")) {
                         continue;
                     }
                 }
-
-
-                    PayOrderInfoEntity payOrderInfoEntity = new PayOrderInfoEntity();
-                    payOrderInfoEntity.setImporter(userEntity.getUserId()+""); // 导入者id
-                    payOrderInfoEntity.setImportTime(format.format(new Date())); // 导入时间
-                    if(Dict.payFlag.item_weixin.getItem().equals(payFlag)){
-                        if(StringUtils.isNotEmpty(payMoney) && !"0.00".equals(payMoney)){
-                            payOrderInfoEntity.setOrderStatus("300"); // 订单状态
-                            payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
-                        }else{
-                            payOrderInfoEntity.setOrderStatus("401"); // 订单状态
-                            payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
-                        }
-                        if(StringUtils.isNotEmpty(applyRefundAmount) && !"0.00".equals(applyRefundAmount)){
-                            payOrderInfoEntity.setPayStatus("5"); // 支付状态
-                            payOrderInfoEntity.setRefundAmount(new BigDecimal(applyRefundAmount)); // 退款金额
-                        }else{
-                            payOrderInfoEntity.setPayStatus("2"); // 支付状态
-                            payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
-                        }
-                    }else if(Dict.payFlag.item_alipay.getItem().equals(payFlag)){
-                        if(StringUtils.isNotEmpty(payMoney) ){
-                            payOrderInfoEntity.setOrderStatus("300"); // 订单状态
-                            payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
-                        }else{
-                            payOrderInfoEntity.setOrderStatus("401"); // 订单状态
-                            payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
-                        }
-                        if(StringUtils.isNotEmpty(refundMoney)){
-                            payOrderInfoEntity.setPayStatus("5"); // 支付状态
-                            payOrderInfoEntity.setRefundAmount(new BigDecimal(refundMoney)); // 退款金额
-                        }else{
-                            payOrderInfoEntity.setPayStatus("2"); // 支付状态
-                            payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
-                        }
+                if (payOrderInfoEntityList != null && payOrderInfoEntityList.size() > 0) {
+                    PayOrderInfoEntity merchOrderSn = payOrderInfoDao.queryByMerchOrderSn(outTradeNo);
+                    if (merchOrderSn != null) {
+                        continue;
+                    }
+                }
+                PayOrderInfoEntity payOrderInfoEntity = new PayOrderInfoEntity();
+                payOrderInfoEntity.setImporter(userEntity.getUserId() + ""); // 导入者id
+                payOrderInfoEntity.setImportTime(format.format(new Date())); // 导入时间
+                if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) {
+                    if (StringUtils.isNotEmpty(payMoney) && !"0.00".equals(payMoney)) {
+                        payOrderInfoEntity.setOrderStatus("300"); // 订单状态
+                        payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
+                    } else {
+                        payOrderInfoEntity.setOrderStatus("401"); // 订单状态
+                        payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
+                    }
+                    if (StringUtils.isNotEmpty(applyRefundAmount) && !"0.00".equals(applyRefundAmount)) {
+                        payOrderInfoEntity.setPayStatus("5"); // 支付状态
+                        payOrderInfoEntity.setRefundAmount(new BigDecimal(applyRefundAmount)); // 退款金额
+                    } else {
+                        payOrderInfoEntity.setPayStatus("2"); // 支付状态
+                        payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
+                    }
+                } else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)) {
+                    if (StringUtils.isNotEmpty(payMoney)) {
+                        payOrderInfoEntity.setOrderStatus("300"); // 订单状态
+                        payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
+                    } else {
+                        payOrderInfoEntity.setOrderStatus("401"); // 订单状态
+                        payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
+                    }
+                    if (StringUtils.isNotEmpty(refundMoney)) {
+                        payOrderInfoEntity.setPayStatus("5"); // 支付状态
+                        payOrderInfoEntity.setRefundAmount(new BigDecimal(refundMoney)); // 退款金额
+                    } else {
+                        payOrderInfoEntity.setPayStatus("2"); // 支付状态
+                        payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
                     }
+                }
 
-                    payOrderInfoEntity.setPayFlag(payFlag); // 支付方式
-                    payOrderInfoEntity.setPayTime(timeStr); // 交易时间
+                payOrderInfoEntity.setPayFlag(payFlag); // 支付方式
+                payOrderInfoEntity.setPayTime(timeStr); // 交易时间
 
-                    payOrderInfoEntity.setMerchOrderSn(outTradeNo); // 订单号
-                    payOrderInfoEntity.setCompared("0"); // 是否对比过
-                    insertList.add(payOrderInfoEntity);
-                }
+                payOrderInfoEntity.setMerchOrderSn(outTradeNo); // 订单号
+                payOrderInfoEntity.setCompared("0"); // 是否对比过
+                insertList.add(payOrderInfoEntity);
             }
+        }
 
-        payOrderInfoDao.saveBatch(insertList);
-
+        if (insertList.size() > 0) {
+            payOrderInfoDao.saveBatch(insertList);
+        }
     }
 }

+ 4 - 1
kmall-admin/src/main/resources/mybatis/mapper/MallPaymentOrderDataDao.xml

@@ -266,7 +266,10 @@
 		from mall2_payment_order_data
 		WHERE 1=1 and
 			DATE_FORMAT(time_str,'%Y-%m-%d')= #{comparedDate}
-			order by time_str
+		<if test="payFlag != null and payFlag.trim() != ''">
+			AND pay_flag = #{payFlag}
+		</if>
+		order by time_str
 	</select>
  	<select id="queryTotal" resultType="int">
 		select count(*) from mall2_payment_order_data

+ 39 - 0
kmall-admin/src/main/resources/mybatis/mapper/compared/PayOrderInfoDao.xml

@@ -36,6 +36,24 @@
 		where mpoi_id = #{id}
 	</select>
 
+	<select id="queryByMerchOrderSn" resultType="com.kmall.admin.entity.compared.PayOrderInfoEntity">
+		select
+			`mpoi_id`,
+			`merch_order_sn`,
+			`pay_status`,
+			`order_amount`,
+			`refund_amount`,
+			`order_status`,
+			`pay_flag`,
+			`pay_time`,
+			`import_time`,
+			`importer`,
+			`compared`,
+			`compared_time`
+		from mall_pay_order_info
+		where merch_order_sn = #{merchOrderSn} limit 1
+	</select>
+
 	<select id="queryList" resultType="com.kmall.admin.entity.compared.PayOrderInfoEntity">
 		select
     		`mpoi_id`,
@@ -186,6 +204,27 @@
 		order by pay_time
 	</select>
 
+	<select id="queryTimeAndPayType" resultType="com.kmall.admin.entity.compared.PayOrderInfoEntity">
+		select
+		`mpoi_id`,
+		`merch_order_sn`,
+		`pay_status`,
+		`order_amount`,
+		`refund_amount`,
+		`order_status`,
+		`pay_flag`,
+		`pay_time`,
+		`import_time`,
+		`importer`,
+		`compared`,
+		`compared_time`
+		from mall_pay_order_info
+		WHERE 1=1
+		AND compared = 0
+		and date_format(pay_time, '%Y-%m-%d') = #{comparedDate}
+		order by pay_time
+	</select>
+
 	<update id="updateBatch" parameterType="java.util.List">
 		<foreach collection="list" item="oderInfo" index="index" open="" close="" separator=";">
 			update mall_pay_order_info

+ 7 - 2
kmall-admin/src/main/webapp/WEB-INF/page/compared/payorderinfo.html

@@ -16,11 +16,16 @@
                 <i-button @click="reloadSearch">重置</i-button>
             </div>
             <div class="buttons-group">
+               <!-- <i-col span="5">
+                    <i-select v-model="q.payFlag" filterable placeholder="支付类型">
+                        <i-option v-for="mct in machineCodeTypes" :value="mct.value" :key="mct.value">{{mct.name}}</i-option>
+                    </i-select>
+                </i-col>-->
                 <i-col span="10">
                     <Date-picker v-model="comparedDate" placeholder="对比日期"/>
                 </i-col>
-                <i-button type="info" @click="comparedTime"><i class="fa fa-pencil-square-o"></i>&nbsp;同步</i-button>
-                <i-button type="info" @click="compared"><i class="fa fa-plus"></i>&nbsp;对比</i-button>
+                <i-button type="info" @click="comparedTime" title="需要选择时间,同步支付订单信息!"><i class="fa fa-pencil-square-o"></i>&nbsp;同步</i-button>
+                <i-button type="info" @click="compared" title="需要选择时间,对比支付单信息!"><i class="fa fa-plus"></i>&nbsp;对比</i-button>
                 <!--                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>-->
 <!--                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>-->
                 <!--<i-col style="display: inline-grid;">

+ 18 - 6
kmall-admin/src/main/webapp/js/compared/payorderinfo.js

@@ -80,13 +80,15 @@ let vm = new Vue({
         showList: true,
         title: null,
 		payOrderInfo: {},
+		machineCodeTypes:[],
 		ruleValidate: {
 			name: [
 				{required: true, message: '名称不能为空', trigger: 'blur'}
 			]
 		},
 		q: {
-		    merchOrderSn: ''
+		    merchOrderSn: '',
+			payFlag:'',
 
 		},
 		comparedDate:""
@@ -110,8 +112,11 @@ let vm = new Vue({
 				alert("请输入对比日期!");
 				return;
 			}
-			$.get("../payorderinfo/comparedTime/"+vm.comparedDate, function (r) {
-				alert(r.msg);
+			var comparedDate = transDate(vm.comparedDate,'yyyy-MM-dd');
+			$.get("../payorderinfo/comparedTime/"+comparedDate, function (r) {
+				alert(r.msg, function (index) {
+					$("#jqGrid").trigger("reloadGrid");
+				});
 			});
 		},
 		add: function () {
@@ -197,7 +202,8 @@ let vm = new Vue({
 		},
         reloadSearch: function() {
             vm.q = {
-				merchOrderSn: ''
+				merchOrderSn: '',
+				payFlag:'',
             }
             vm.reload(1);
 		},
@@ -209,7 +215,8 @@ let vm = new Vue({
 				page = $("#jqGrid").jqGrid('getGridParam', 'page');
 			}
 			$("#jqGrid").jqGrid('setGridParam', {
-                postData: {'merchOrderSn': vm.q.merchOrderSn},
+                postData: {'merchOrderSn': vm.q.merchOrderSn,
+					'payFlag': vm.q.payFlag},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');
@@ -222,5 +229,10 @@ let vm = new Vue({
         handleReset: function (name) {
             handleResetForm(this, name);
         }
-	}
+	},
+	mounted() {
+		$.get("../sys/macro/queryMacrosByValue?value=payFlag", function (r) {
+			vm.machineCodeTypes = r.list;
+		});
+	},
 });