浏览代码

订单核销时, 写入积分信息

Memory_LG 3 周之前
父节点
当前提交
b43a644129

+ 10 - 2
qmjszx-admin/src/main/resources/templates/system/vipCardLog/vipCardLog.html

@@ -120,7 +120,7 @@
                     formatter: function (value, row, index) {
                         var actions = [];
                         if ("chongzhi" !== row.orderType && "payment_status_have_paid" === row.paymentStatus) {
-                            actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>退款</a> ');
+                            actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="refund(\'' + row.id + '\')"><i class="fa fa-remove"></i>退款</a> ');
                         }
 
                         // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
@@ -133,7 +133,15 @@
 
 
     function refund(id){
-        $.operate.save(prefix + "/refund", $('#form-vipCardLog-edit').serialize());
+        $.modal.confirm("确定执行退卡操作吗?", function() {
+            var url = table.options.removeUrl;
+            if (table.options.type == table_type.bootstrapTreeTable) {
+                $.operate.get(url);
+            } else {
+                var data = { "id": id };
+                $.operate.submit(url, "post", "json", data);
+            }
+        });
     }
 </script>
 </body>

+ 3 - 2
qmjszx-business/src/main/java/beilv/admissionticket/service/impl/AdmissionTicketServiceImpl.java

@@ -145,9 +145,10 @@ public class AdmissionTicketServiceImpl implements IAdmissionTicketService {
 
     @Override
     public AjaxResult refund(AdmissionTicket beilvAdmissionTicket) {
-        VipCardLog vipCardLog = new VipCardLog();
+        /*VipCardLog vipCardLog = new VipCardLog();
         vipCardLog.setBusId(beilvAdmissionTicket.getId());
-        return vipCardLogService.refundById(vipCardLog, false);
+        return vipCardLogService.refundById(vipCardLog, false);*/
+        return null;
     }
 
     @Override

+ 3 - 0
qmjszx-business/src/main/java/beilv/carinformation/mapper/CarInformationMapper.java

@@ -2,6 +2,7 @@ package beilv.carinformation.mapper;
 
 import beilv.carinformation.domain.CarInformation;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -58,4 +59,6 @@ public interface CarInformationMapper {
      * @return 结果
      */
     public int deleteCarInformationByIds(String[] ids);
+
+    BigDecimal selectScoreByCard(String paymentId);
 }

+ 57 - 0
qmjszx-business/src/main/java/beilv/competition/task/RedisTaskChecker.java

@@ -2,11 +2,16 @@ package beilv.competition.task;
 
 import beilv.admissionticket.domain.AdmissionTicket;
 import beilv.admissionticket.mapper.AdmissionTicketMapper;
+import beilv.carinformation.mapper.CarInformationMapper;
 import beilv.common.utils.DateUtils;
 import beilv.competition.domain.Competition;
 import beilv.competition.domain.RedisTask;
 import beilv.competition.mapper.CompetitionMapper;
 import beilv.stadium.domain.Stadium;
+import beilv.vipCard.domain.VipCard;
+import beilv.vipCard.mapper.VipCardMapper;
+import beilv.vipCardAmountLog.domain.VipCardAmountLog;
+import beilv.vipCardAmountLog.mapper.VipCardAmountLogMapper;
 import beilv.vipCardLog.domain.VipCardLog;
 import beilv.vipCardLog.mapper.VipCardLogMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -18,7 +23,10 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
+import java.util.List;
 import java.util.Set;
 
 import static beilv.competition.domain.Constant.*;
@@ -41,6 +49,9 @@ public class RedisTaskChecker {
     @Resource
     private VipCardLogMapper vipCardLogMapper;
 
+    @Resource
+    private VipCardMapper vipCardMapper;
+
     // 注入门票 Mapper
     @Resource
     private AdmissionTicketMapper ticketMapper;
@@ -49,6 +60,13 @@ public class RedisTaskChecker {
     @Autowired
     private ObjectMapper objectMapper;
 
+    @Resource
+    private VipCardAmountLogMapper amountLogMapper;
+
+
+    @Resource
+    private CarInformationMapper carInformationMapper;
+
     /**
      * 定时任务,每秒检查一次,处理报名结束的任务
      */
@@ -198,6 +216,36 @@ public class RedisTaskChecker {
      */
     private void updateVipCardLog(String competitionId, String orderType, String paymentStatus) {
         VipCardLog vipCardLog = new VipCardLog(String.valueOf(competitionId), orderType, paymentStatus, DateUtils.getNowDate());
+
+        //报名结束, 参赛门票核验状态, 有会员卡的加积分  1111
+        //根据订单类型和业务id获取订单集合
+        List<VipCardLog> orderList = vipCardLogMapper.selectVipCardLogByBusId(competitionId, orderType);
+
+        //遍历订单集合
+        orderList.forEach(orderInfo->{
+            //根据下单人员查询会员卡
+            VipCard vipCard = vipCardMapper.selectVipCardByUserId(orderInfo.getUserId());
+            if(null != vipCard){
+
+                BigDecimal addScore;//增加的积分
+                if("numCard".equals(orderInfo.getPaymentType())){
+                    //如果使用的次卡, 则查询次卡对应的单次积分
+                    addScore =  carInformationMapper.selectScoreByCard(orderInfo.getPaymentId()).setScale(0, RoundingMode.FLOOR);
+                }else{
+                    //如果使用的微信支付, 或者会员卡支付, 则增加的积分为支付的钱数
+                    addScore = orderInfo.getOriginalPrice().setScale(0, RoundingMode.FLOOR);
+                }
+
+                //存在会员卡, 增加积分流水
+                VipCardAmountLog vipCardAmountLog = new VipCardAmountLog(orderInfo.getUserId(), vipCard.getId(), orderInfo.getId(), vipCard.getScore(), addScore, "2");
+                amountLogMapper.insertVipCardAmountLog(vipCardAmountLog);
+
+                //存在会员卡, 增加积分
+                vipCard.setScore(vipCardAmountLog.getRemainingAmount());
+                vipCardMapper.updateVipCard(vipCard);
+
+            }
+        });
         vipCardLogMapper.updateVipCardLogByBusId(vipCardLog);
     }
 
@@ -237,6 +285,15 @@ public class RedisTaskChecker {
         ticketMapper.updateBeilvAdmissionTicket(admissionTicket);
     }
 
+
+    /**
+     * 根据业务id, 和订单类型获取, 订单集合
+     * @return
+     */
+    private List<VipCardLog> getOrderList(){
+        return null;
+    }
+
     /**
      * 定义任务处理逻辑的函数式接口
      */

+ 4 - 1
qmjszx-business/src/main/java/beilv/usermembershipcard/domain/UserMembershipCard.java

@@ -92,11 +92,14 @@ public class UserMembershipCard extends BaseEntity {
     @Excel(name = "状态")
     private String stateLabel;
 
-    public UserMembershipCard(String userId, String id, Integer totalNumber, String version, String state, Date nowDate) {
+    private String cardInfoId;
+
+    public UserMembershipCard(String userId, String id, Integer totalNumber, String version, String state, Date nowDate, String cardInfoId) {
         this.userId = userId;
         this.recordId = id;
         this.remainingNumber = totalNumber;
         this.version = version;
+        this.cardInfoId = cardInfoId;
         this.state = state;
         this.setCreateTime(nowDate);
         this.setCreateBy(userId);

+ 6 - 0
qmjszx-business/src/main/java/beilv/vipCard/domain/VipCard.java

@@ -50,6 +50,12 @@ public class VipCard extends BaseEntity {
     private BigDecimal balance;
 
     /**
+     * 当前积分
+     */
+    @Excel(name = "当前积分")
+    private BigDecimal score;
+
+    /**
      * 退卡时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 1 - 1
qmjszx-business/src/main/java/beilv/vipCardLog/mapper/VipCardLogMapper.java

@@ -69,5 +69,5 @@ public interface VipCardLogMapper {
 
     void updateVipCardLogByBusId(VipCardLog vipCardLog);
 
-    VipCardLog selectVipCardLogByBusId(String busId);
+    List<VipCardLog> selectVipCardLogByBusId(String busId, String orderType);
 }

+ 8 - 7
qmjszx-business/src/main/java/beilv/vipCardLog/service/impl/VipCardLogServiceImpl.java

@@ -209,7 +209,7 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
                 //如果是购买次卡订单, 拉去卡种信息
                 CarInformation carInformation = carInformationService.selectCarInformationById(Long.valueOf(orderInfo.getBusId()));
                 //购卡订单, 支付成功, 生成卡片写入到次卡表
-                userMembershipCardService.insertUserMembershipCard(new UserMembershipCard(orderInfo.getUserId(), vipCardLog.getId(), carInformation.getTotalNumber(), "0", "3", DateUtils.getNowDate()));
+                userMembershipCardService.insertUserMembershipCard(new UserMembershipCard(orderInfo.getUserId(), vipCardLog.getId(), carInformation.getTotalNumber(), "0", "3", DateUtils.getNowDate(), orderInfo.getBusId()));
             }
 
             if("yueqiu".equals(orderType)){
@@ -239,14 +239,15 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
 
     @Override
     public AjaxResult refundById(VipCardLog vipCardLog, boolean isOnline) {
-        //拉去订单信息
-        VipCardLog orderInfo;
-        if(StringUtils.isNotEmpty(vipCardLog.getId())){
-            orderInfo =  vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
-        }else{
-            orderInfo = vipCardLogMapper.selectVipCardLogByBusId(vipCardLog.getBusId());
+
+
+        if(StringUtils.isEmpty(vipCardLog.getId())){
+           return AjaxResult.error("订单编号不能为空!");
         }
 
+        //拉去订单信息
+        VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
+
         if ("payment_status_to_be_paid".equals(orderInfo.getPaymentStatus())) {
             return AjaxResult.error("订单未支付, 无需退款!");
         }

+ 5 - 0
qmjszx-business/src/main/resources/mapper/card/CarInformationMapper.xml

@@ -117,4 +117,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <select id="selectScoreByCard" parameterType="string" resultType="decimal">
+        select point FROM card_information a
+        LEFT JOIN user_membership_card b on a.id = b.card_info_id
+        where b.id = #{paymentId}
+    </select>
 </mapper>

+ 63 - 48
qmjszx-business/src/main/resources/mapper/card/UserMembershipCardMapper.xml

@@ -1,49 +1,61 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="beilv.usermembershipcard.mapper.UserMembershipCardMapper">
 
     <resultMap type="UserMembershipCard" id="UserMembershipCardResult">
-        <result property="id"    column="id"    />
-        <result property="userId"    column="user_id"    />
-        <result property="recordId"    column="record_id"    />
-        <result property="totalNumber"    column="total_number"    />
-        <result property="remainingNumber"    column="remaining_number"    />
-        <result property="version"    column="version"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="userName"    column="username"    />
-        <result property="mobile"    column="mobile"    />
-        <result property="cardName"    column="cardName"    />
-        <result property="state"    column="state"    />
-        <result property="cardType"    column="card_type"    />
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="recordId" column="record_id"/>
+        <result property="totalNumber" column="total_number"/>
+        <result property="remainingNumber" column="remaining_number"/>
+        <result property="version" column="version"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userName" column="username"/>
+        <result property="mobile" column="mobile"/>
+        <result property="cardName" column="cardName"/>
+        <result property="state" column="state"/>
+        <result property="cardType" column="card_type"/>
+        <result property="cardInfoId" column="card_info_id"/>
     </resultMap>
 
     <sql id="selectUserMembershipCardVo">
-        select id, user_id, record_id, remaining_number, version, create_by, create_time, update_by, update_time from user_membership_card
+        select id,
+               user_id,
+               record_id,
+               remaining_number,
+               version,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               card_info_id
+        from user_membership_card
     </sql>
 
     <select id="selectUserMembershipCardList" parameterType="UserMembershipCard" resultMap="UserMembershipCardResult">
         SELECT
-            a.id,
-            a.user_id,
-            b.username,
-            b.mobile,
-            a.record_id,
-            a.remaining_number,
-            a.state
+        a.id,
+        a.user_id,
+        b.username,
+        b.mobile,
+        a.record_id,
+        a.remaining_number,
+        a.state,
+        a.card_info_id
         FROM
-            user_membership_card a
-            left join sys_member b on a.user_id = b.id
+        user_membership_card a
+        left join sys_member b on a.user_id = b.id
         <where>
-            <if test="userId != null  and userId != ''"> and a.user_id = #{userId}</if>
-            <if test="recordId != null  and recordId != ''"> and a.record_id = #{recordId}</if>
-            <if test="remainingNumber != null "> and a.remaining_number = #{remainingNumber}</if>
-            <if test="version != null  and version != ''"> and a.version = #{version}</if>
-            <if test="mobile != null  and mobile != ''"> and b.mobile like concat('%', #{mobile}, '%')</if>
+            <if test="userId != null  and userId != ''">and a.user_id = #{userId}</if>
+            <if test="recordId != null  and recordId != ''">and a.record_id = #{recordId}</if>
+            <if test="remainingNumber != null ">and a.remaining_number = #{remainingNumber}</if>
+            <if test="version != null  and version != ''">and a.version = #{version}</if>
+            <if test="mobile != null  and mobile != ''">and b.mobile like concat('%', #{mobile}, '%')</if>
             <if test="state != null  and state != ''">
                 <choose>
                     <when test="state == 'hasClubCard'">
@@ -77,7 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="state != null">state,</if>
-         </trim>
+            <if test="cardInfoId != null">card_info_id,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
             <if test="userId != null">#{userId},</if>
@@ -90,7 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="state != null">#{state},</if>
-         </trim>
+            <if test="cardInfoId != null">#{cardInfoId},</if>
+        </trim>
     </insert>
 
     <update id="updateUserMembershipCard" parameterType="UserMembershipCard">
@@ -106,12 +120,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="state != null">state = #{state},</if>
+            <if test="cardInfoId != null">card_info_id = #{cardInfoId},</if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteUserMembershipCardById" parameterType="Long">
-        delete from user_membership_card where id = #{id}
+        delete
+        from user_membership_card
+        where id = #{id}
     </delete>
 
     <delete id="deleteUserMembershipCardByIds" parameterType="String">
@@ -122,19 +139,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <select id="getStream" parameterType="Long" resultType="java.util.Map">
-        SELECT
-            a.id,
-            a.type,
-            d.username,
-            d.mobile,
-            c.card_name cardName,
-            c.card_type cardType,
-            DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%i:%s') createTime
-        FROM
-            member_stream a
-            left join user_membership_card b on a.user_card_id = b.id
-            left join card_purchase_record c on b.record_id = c.id
-            left join sys_member d on b.user_id = d.id
+        SELECT a.id,
+               a.type,
+               d.username,
+               d.mobile,
+               c.card_name                                     cardName,
+               c.card_type                                     cardType,
+               DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%i:%s') createTime
+        FROM member_stream a
+                 left join user_membership_card b on a.user_card_id = b.id
+                 left join card_purchase_record c on b.record_id = c.id
+                 left join sys_member d on b.user_id = d.id
         WHERE a.user_card_id = #{id}
         order by a.create_time desc
     </select>

+ 7 - 3
qmjszx-business/src/main/resources/mapper/vipCard/VipCardMapper.xml

@@ -14,15 +14,16 @@
         <result property="cardState" column="card_state"/>
         <result property="username" column="username"/>
         <result property="mobile" column="mobile"/>
+        <result property="score" column="score"/>
     </resultMap>
 
     <sql id="selectVipCardVo">
-        select id, user_id, vip_level, balance, create_time, refund_time, card_state
+        select id, user_id, vip_level, balance, create_time, refund_time, card_state, score
         from beilv_vip_card
     </sql>
 
     <select id="selectVipCardList" parameterType="VipCard" resultMap="VipCardResult">
-        select a.id, a.vip_level, a.balance, a.create_time, a.refund_time, a.card_state, b.username, b.mobile
+        select a.id, a.vip_level, a.balance, a.create_time, a.refund_time, a.card_state, b.username, b.mobile, a.score
         from beilv_vip_card a
         left join sys_member b on a.user_id = b.id
         <where>
@@ -32,7 +33,7 @@
     </select>
 
     <select id="selectVipCardById" parameterType="String" resultMap="VipCardResult">
-        select a.id, a.vip_level, a.balance, a.create_time, a.refund_time, a.card_state, b.username, b.mobile
+        select a.id, a.vip_level, a.balance, a.create_time, a.refund_time, a.card_state, b.username, b.mobile, a.score
         from beilv_vip_card a
                  left join sys_member b on a.user_id = b.id
         where a.id = #{id}
@@ -48,6 +49,7 @@
             <if test="createTime != null">create_time,</if>
             <if test="refundTime != null">refund_time,</if>
             <if test="cardState != null">card_state,</if>
+            <if test="score != null">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -57,6 +59,7 @@
             <if test="createTime != null">#{createTime},</if>
             <if test="refundTime != null">#{refundTime},</if>
             <if test="cardState != null">#{cardState},</if>
+            <if test="score != null">#{score},</if>
         </trim>
     </insert>
 
@@ -69,6 +72,7 @@
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="refundTime != null">refund_time = #{refundTime},</if>
             <if test="cardState != null">card_state = #{cardState},</if>
+            <if test="score != null">score = #{score},</if>
         </trim>
         <where>
             <if test="id != null and id != ''">