Procházet zdrojové kódy

支付金额按分,及支付成功后的绑定状态处理

mingfu před 1 týdnem
rodič
revize
8f73e77abb

+ 1 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontECardController.java

@@ -208,7 +208,7 @@ public class FrontECardController extends BaseController {
             type = "h5";
         }
         SysUser u = SecurityUtils.getLoginUser().getUser();
-        Integer totalFee2 = (int)(totalFee * 100D);
+        Integer totalFee2 = totalFee.intValue();
 
         BBusiPaymentOrders insertOrder = new BBusiPaymentOrders();
         insertOrder.setCode(IdUtils.simpleUUID());

+ 15 - 4
ie-admin/src/main/java/com/ruoyi/web/controller/front/UserController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.front;
 
+import cn.hutool.core.lang.Dict;
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.annotation.Log;
@@ -12,10 +13,7 @@ import com.ruoyi.common.core.domain.model.LoginBody;
 import com.ruoyi.common.core.domain.model.LoginCard;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.AccessFromType;
-import com.ruoyi.common.enums.AccountType;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.enums.ExamType;
+import com.ruoyi.common.enums.*;
 import com.ruoyi.common.utils.NumberUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dz.domain.*;
@@ -215,6 +213,19 @@ public class UserController extends BaseController {
         return ajax;
     }
 
+
+    @GetMapping("getUserBindCard")
+    @ApiOperation("取用户卡绑定状态")
+    public AjaxResult getUserBindCard() {
+        SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
+        if(null != sysUser.getBindStatus() && BindStatus.Pend.code().equals(sysUser.getBindStatus())) {
+            DzCards dzCards = dzCardsService.selectDzCardsByCardId(sysUser.getCardId());
+            return AjaxResult.success(Dict.of("cardNo", dzCards.getCardNo(), "password", dzCards.getPassword()));
+        }
+        return AjaxResult.success();
+    }
+
+
     /**
      * 获取用户信息
      *

+ 14 - 16
ie-admin/src/main/java/com/ruoyi/web/service/WeixinPayService.java

@@ -7,12 +7,9 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.RegisterBody;
 import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.enums.BoolValues;
+import com.ruoyi.common.enums.BindStatus;
 import com.ruoyi.common.enums.ECardPayStatus;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.QRCodeUtils;
@@ -21,10 +18,8 @@ import com.ruoyi.dz.domain.DzCards;
 import com.ruoyi.dz.service.IDzCardsService;
 import com.ruoyi.enums.CardDistributeStatus;
 import com.ruoyi.enums.CardStatus;
-import com.ruoyi.enums.CardTimeStatus;
-import com.ruoyi.enums.PayStatus;
 import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ShortMessageService;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
 import com.ruoyi.voluntary.service.IBBusiPaymentOrdersService;
 import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
@@ -72,15 +67,15 @@ public class WeixinPayService {
     @Autowired
     private IBBusiPaymentOrdersService paymentOrdersService;
     @Autowired
-    private SysRegisterService registerService;
-    @Autowired
     private IDzCardsService cardsService;
+    private final ISysUserService sysUserService;
     private final ISysConfigService sysConfigService;
 
 
     public WeixinPayService(@Value("${wxpay.mchid}") String mchId, @Value("${wxpay.key}") String apiV3Key,
-                            @Value("${wxpay.mchsn}") String mchSerialNo, @Value("${wxpay.privateKey}") String privateKey, ISysConfigService sysConfigService) throws Exception {
+                            @Value("${wxpay.mchsn}") String mchSerialNo, @Value("${wxpay.privateKey}") String privateKey, ISysUserService sysUserService, ISysConfigService sysConfigService) throws Exception {
         this.mchId = mchId;
+        this.sysUserService = sysUserService;
         this.sysConfigService = sysConfigService;
         // 加载商户私钥(privateKey:私钥字符串)
         // String privateKey = getKey();
@@ -176,16 +171,12 @@ public class WeixinPayService {
             log.warn("WxPay 订单支付失败 {}", orderId);
             return;
         }
-        //根据orderNo获取订单
-        String phonenumber = order.getPhonenumber();
         //查找一张未使用的电子卡
         DzCards eCard = cardsService.selectOneECard();
         //修改电子卡已使用的状态。 电子卡新增时需要直接分配代理商,学生注册时year与outTime需要取b_busi_payment_orders里面的值(20220901已完成)
-        eCard.setStatus(CardStatus.Active.getVal());
-        eCard.setOpenTime(DateUtils.getNowDate());
+        eCard.setStatus(CardStatus.Free.getVal());
         eCard.setDistributeStatus(CardDistributeStatus.Assign.getVal());
-        eCard.setTimeStatus(CardTimeStatus.Valid.getVal());
-        eCard.setPayStatus(PayStatus.Paid.getVal());
+        eCard.setDistributeTime(DateUtils.getNowDate());
         cardsService.updateDzCards(eCard);
 
         order.setCardId(eCard.getCardId());
@@ -194,6 +185,13 @@ public class WeixinPayService {
         order.setTransactionId(transactionId);
         order.setStatus(ECardPayStatus.paid.getValue());
         paymentOrdersService.updateBBusiPaymentOrders(order);
+
+        Long userId = Long.parseLong(order.getCustomerCode());
+        SysUser upUser = new SysUser();
+        upUser.setUserId(userId);
+        upUser.setBindStatus(BindStatus.Pend.code());
+        upUser.setCardId(eCard.getCardId());
+        sysUserService.updateUserProfile(upUser);
     }
 
     public void processPaySuccess(PayOrderReq payResult) {

+ 9 - 0
ie-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@@ -146,6 +146,7 @@ public class SysUser extends BaseEntity
     @JsonIgnore
     private String evalCounts;
 
+    private Integer bindStatus;
     private Long cardId;
     private Integer classSelect;
 
@@ -610,6 +611,14 @@ public class SysUser extends BaseEntity
         this.evalCounts = evalCounts;
     }
 
+    public Integer getBindStatus() {
+        return bindStatus;
+    }
+
+    public void setBindStatus(Integer bindStatus) {
+        this.bindStatus = bindStatus;
+    }
+
     public String getCode() {
         return String.valueOf(userId);
     }

+ 21 - 0
ie-common/src/main/java/com/ruoyi/common/enums/BindStatus.java

@@ -0,0 +1,21 @@
+package com.ruoyi.common.enums;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum BindStatus {
+    None(0, "未绑定"),
+    Pend(1, "待绑定确认"),
+    Bind(2, "绑定成功");
+
+    public Integer code() {
+        return code;
+    }
+
+    public String title() {
+        return title;
+    }
+
+    private final Integer code;
+    private final String title;
+}

+ 1 - 1
ie-system/src/main/resources/mapper/dz/DzCardsMapper.xml

@@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
 
     <select id="selectOneECard" resultMap="DzCardsResult">
-        SELECT * from dz_cards where status=0 and card_no like '7%' and LENGTH(card_no)=8 limit 1
+        SELECT * from dz_cards where status=0 and distribute_status = 0 and card_no like '7%' and LENGTH(card_no)=8 limit 1
     </select>
 
     <select id="selectDzCardsList" parameterType="DzCards" resultMap="DzCardsResult">

+ 10 - 3
ie-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="directedStudy" column="directed_study"       />
 		<result property="evalCounts"     column="eval_counts" />
 		<result property="cardId"        column="card_id"         />
+		<result property="bindStatus"        column="bind_status"         />
         <result property="status"        column="status"          />
         <result property="delFlag"       column="del_flag"        />
         <result property="loginIp"       column="login_ip"        />
@@ -63,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
-		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.exam_major,u.directed_study,u.eval_counts,u.card_id,u.account_type,
+		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.exam_major,u.directed_study,u.eval_counts,u.card_id,u.bind_status,u.account_type,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status, u.user_type, u.user_type_id
         from sys_user u
@@ -74,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, u.user_type, u.user_type_id, u.account_type
-		,u.card_id,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
+		,u.card_id,u.bind_status,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join dz_cards c on u.card_id = c.card_id
 		left join dz_agent a on CAST(u.invite_code AS UNSIGNED) = a.agent_id
@@ -145,7 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="selectCardUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, u.user_type, u.user_type_id, u.account_type
-		,u.card_id,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
+		,u.card_id,u.bind_status,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join dz_cards c on u.card_id = c.card_id
 		left join dz_agent a on CAST(u.invite_code AS UNSIGNED) = a.agent_id
@@ -196,6 +197,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="inviteCode != null and inviteCode != ''">
 			AND u.invite_code like concat('%', #{inviteCode}, '%')
 		</if>
+		<if test="bindStatus != null">
+			AND u.bind_status = #{bindStatus}
+		</if>
 		<if test="usercardType != null and usercardType != ''">
 			<choose>
 				<when test="usercardType == '99' or usercardType == 99">
@@ -338,6 +342,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		    <if test="examMajor != null and examMajor != ''">exam_major,</if>
 		    <if test="directedStudy != null and directedStudy != ''">directed_study,</if>
 		    <if test="cardId != null and cardId != ''">card_id,</if>
+		    <if test="bindStatus != null">bind_status,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			<if test="remark != null and remark != ''">remark,</if>
 		    <if test="userType != null and userType != ''">user_type,</if>
@@ -367,6 +372,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="examMajor != null and examMajor != ''">#{examMajor},</if>
  			<if test="directedStudy != null and directedStudy != ''">#{directedStudy},</if>
  			<if test="cardId != null and cardId != ''">#{cardId},</if>
+		    <if test="bindStatus != null">#{bindStatus},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
 		    <if test="userType != null">#{userType},</if>
@@ -399,6 +405,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="directedStudy != null and directedStudy != ''">directed_study = #{directedStudy},</if>
 			<if test="evalCounts != null and evalCounts != ''">eval_counts = #{evalCounts},</if>
 			<if test="cardId != null and cardId != ''">card_id = #{cardId},</if>
+			<if test="bindStatus != null">bind_status = #{bindStatus},</if>
  			<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>