Explorar el Código

在线支付开通超级会员优化

chao hace 3 años
padre
commit
4f49fc68a5

+ 5 - 0
src/main/java/com/caimei365/user/mapper/SuperVipMapper.java

@@ -97,6 +97,7 @@ public interface SuperVipMapper {
      * @param payHistory
      */
     int addPayHistory(VipPayHistoryPo payHistory);
+    void updatePayHistory(VipPayHistoryPo payHistory);
 
     /**
      * 根据套餐id查套餐时间
@@ -144,4 +145,8 @@ public interface SuperVipMapper {
      * @return
      */
     List<VipPackage> findPackage();
+    /**
+     * 查询未支付的当前超级会员套餐购买记录
+     */
+    Integer getVipHistoryId(Integer userId, Integer packageId);
 }

+ 10 - 2
src/main/java/com/caimei365/user/service/impl/RegisterServiceImpl.java

@@ -1042,6 +1042,8 @@ public class RegisterServiceImpl implements RegisterService {
         }
         cal.setTime(beginTime);
         cal.add(Calendar.MONTH, pac.getDuration());
+        // 查询未支付的当前超级会员套餐购买记录
+        Integer dbHistoryId = vipMapper.getVipHistoryId(userId, packageId);
         //userId, packageId, beginTime, endTime, payStatus, payWay, payType, price, userBeans, payTime
         VipPayHistoryPo payHistory = new VipPayHistoryPo();
         payHistory.setUserId(userId);
@@ -1053,8 +1055,14 @@ public class RegisterServiceImpl implements RegisterService {
         // 线上支付
         payHistory.setPayWay(1);
         payHistory.setPrice(pac.getPrice());
-        // 新增超级会员购买记录
-        int id = vipMapper.addPayHistory(payHistory);
+        if (null != dbHistoryId && dbHistoryId > 0) {
+            payHistory.setId(dbHistoryId);
+            // 更新未支付的当前超级会员购买记录
+            vipMapper.updatePayHistory(payHistory);
+        } else {
+            // 新增超级会员购买记录
+            vipMapper.addPayHistory(payHistory);
+        }
         if (payHistory.getId() > 0) {
             return ResponseJson.success(payHistory.getId());
         }

+ 11 - 3
src/main/resources/mapper/SuperVipMapper.xml

@@ -54,7 +54,10 @@
                 #{endTime}, #{payStatus}, #{payWay}, #{payType}, #{price}, #{userBeans},
                 #{payTime})
     </insert>
-
+    <update id="updatePayHistory">
+        UPDATE cm_svip_history set payStatus=#{payStatus},payWay=#{payWay},payType=#{payType},beginTime=#{beginTime},endTime=#{endTime},price=#{price}
+        WHERE id = #{id}
+    </update>
     <select id="findUserPackageTime" resultType="java.lang.Integer">
         select duration
         from cm_svip_package
@@ -84,7 +87,6 @@
         </if>
         where userId = #{userId}
     </update>
-
     <select id="findVipHistory" resultType="com.caimei365.user.model.po.VipPayHistoryPo">
         select packageId,
                beginTime,
@@ -96,7 +98,7 @@
                userBeans,
                payTime
         from cm_svip_history
-        where userId = #{userId}
+        where userId = #{userId} AND payStatus=1
         order by payTime desc
     </select>
 
@@ -149,6 +151,12 @@
         from cm_svip_package
         where delFlag = 0
     </select>
+    <select id="getVipHistoryId" resultType="java.lang.Integer">
+        SELECT id FROM cm_svip_history
+        WHERE payStatus=0 AND userId = #{userId} AND packageId=#{packageId}
+        ORDER BY id DESC
+        LIMIT 1
+    </select>
 
 
 </mapper>