wangzongkui 6 månader sedan
förälder
incheckning
b25bafd04f

+ 102 - 27
renren-admin/src/main/java/io/renren/modules/qmgj/service/impl/ActivityServiceImpl.java

@@ -33,11 +33,17 @@ import io.renren.modules.qmgj.wxpayutil.OurWxPayConfig;
 import io.renren.modules.qmgj.wxpayutil.PayCommonUtil;
 import io.renren.modules.qmgj.wxpayutil.StringUtil;
 import io.renren.modules.qmjz.entity.Region;
+import io.renren.modules.qmjz.entity.ScoreStu;
 import io.renren.modules.qmjz.entity.WxConsumeInfoEntity;
 import io.renren.modules.qmjz.enums.ActivityStatus;
+import io.renren.modules.qmjz.enums.ScoreType;
+import io.renren.modules.qmjz.enums.TaskType;
+import io.renren.modules.qmjz.mapper.ScoreStuMapper;
 import io.renren.modules.qmjz.service.RegionService;
+import io.renren.modules.qmjz.service.ScoreStuService;
 import io.renren.modules.qmjz.service.WxConsumeInfoService;
 import io.renren.modules.qmjz.utils.BeanCopyUtils;
+import io.renren.modules.qmjz.utils.DateForStr;
 import io.renren.modules.sys.dao.SysUserDao;
 import io.renren.modules.sys.entity.SysRoleEntity;
 import io.renren.modules.sys.entity.SysUserEntity;
@@ -145,6 +151,10 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, ActivityEntity
     private ActivityStuPayinfoDao activityStuPayinfoDao;
     @Resource
     private WorkService workService;
+    @Autowired
+    private ScoreStuService scoreStuService;
+    @Autowired
+    private ScoreStuMapper scoreStuMapper;
 
     @Override
     public PageUtils queryPage(Map<String, Object> params) {
@@ -836,6 +846,21 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, ActivityEntity
         activityStu.setCreateTime(DateFormatUtils.format(now, "yyyy-MM-dd HH:mm:ss"));
         activityStu.setCreateId((long) 0);
         activityStuDao.insert(activityStu);
+        //插入一条积分记录
+         params.get("usePoints");
+        BigDecimal usePoints = BigDecimal.valueOf((Integer)(params.get("usePoints")));
+        ScoreStu add = new ScoreStu();
+        add.setDay(DateForStr.getInfoDateStr(new Date()));
+        add.setStuId(stuId);
+        add.setScoreType(ScoreType.STORE_SCORE.getCode());
+        add.setTaskId(TaskType.ACTIVITY_APPLY_DEDUCT.getCode());
+        add.setBusinessId(TaskType.ACTIVITY_APPLY_DEDUCT.getCode());
+        add.setScoreEvent(TaskType.ACTIVITY_APPLY_DEDUCT.getInfo());
+        add.setScoreValue(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue());
+        add.setCreateTime(new Date());
+        add.setSurplusScore(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue() + this.scoreStuService.getTotalScore(stuId));
+        scoreStuMapper.insert(add);
+
 
         count = activityStuDao.selectCount(
                 new QueryWrapper<ActivityStuEntity>().eq("activity_id", actId).eq("is_delete", 0).eq("status", "01"));
@@ -982,6 +1007,44 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, ActivityEntity
 
         Integer isNeedVip = activity.getIsNeedVip();
         BigDecimal money = activity.getMoney();
+        //qyh_points_config
+        PointsConfigEntity pointsConfig = pointsConfigService.getOne();
+        if (pointsConfig == null) {
+            return R.error(514, "系统配置错误!");
+        }
+        //获取会员总积分
+        Integer totalScore = scoreStuService.getTotalScore(stuId);
+        Integer pointsDeduction = pointsConfig.getPointsDeduction();
+        BigDecimal actualPayment = BigDecimal.ZERO;
+        int usePoints = 0;
+        // 当前价格所需要的积分
+        Integer priceIntegral =
+                NumberUtil.mul(money, NumberUtil.toBigDecimal(pointsDeduction)).intValue();
+        if (NumberUtil.isGreater(NumberUtil.toBigDecimal(totalScore),
+                NumberUtil.toBigDecimal(priceIntegral))) {
+            usePoints = priceIntegral;
+            BigDecimal deductiblePrice =
+                    NumberUtil.div(priceIntegral, pointsDeduction, 0, RoundingMode.FLOOR);
+            actualPayment = NumberUtil.sub(money, deductiblePrice);
+        } else {
+            BigDecimal deductiblePrice =
+                    NumberUtil.div(totalScore, pointsDeduction, 0, RoundingMode.FLOOR);
+            usePoints = NumberUtil.mul(deductiblePrice, pointsDeduction).intValue();
+            actualPayment = NumberUtil.sub(money, deductiblePrice);
+        }
+        params.put("usePoints", usePoints);
+        //积分够扣且小于扣除上限走免费报名接口
+        if (BigDecimal.valueOf(totalScore).divide(BigDecimal.valueOf(pointsConfig.getPointsDeduction())).setScale(0, RoundingMode.FLOOR).compareTo(money) >= 0
+                &&  BigDecimal.valueOf(pointsConfig.getPointsDeduction()).compareTo(BigDecimal.valueOf(pointsConfig.getDeductionLimit())) <= 0){
+            // 直接走免费报名接口
+            R register = register(params);
+            Integer code = (Integer) register.get("code");
+            if (0 == code) {
+                member.setActFree("0");
+                memberInfoDao.updateById(member);
+            }
+            return register;
+        }
         if (NumberUtil.isLessOrEqual(money, BigDecimal.ZERO)) {
             // 直接走免费报名接口
             R register = register(params);
@@ -1087,8 +1150,8 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, ActivityEntity
             return R.error(508, "当前活动已报满!");
         }
 
-        BigDecimal actualPayment = BigDecimal.ZERO;
-        int usePoints = 0;
+        //BigDecimal actualPayment = BigDecimal.ZERO;
+        //int usePoints = 0;
         Integer isDeductiblePrice = MapUtil.getInt(params, "isDeductiblePrice");
         Long id = member.getId();
         Integer totalPoints = pointsRecordService.getTotalPointsByMemberId(id);
@@ -1104,33 +1167,45 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, ActivityEntity
                                 NumberUtil.toBigDecimal(deductionLimit))) {
                             totalPoints = deductionLimit;
                         }
-                        Integer pointsDeduction = info.getPointsDeduction();
-                        // 当前价格所需要的积分
-                        Integer priceIntegral =
-                                NumberUtil.mul(money, NumberUtil.toBigDecimal(pointsDeduction)).intValue();
-                        if (NumberUtil.isGreater(NumberUtil.toBigDecimal(totalPoints),
-                                NumberUtil.toBigDecimal(priceIntegral))) {
-                            usePoints = priceIntegral;
-                            BigDecimal deductiblePrice =
-                                    NumberUtil.div(priceIntegral, pointsDeduction, 0, RoundingMode.FLOOR);
-                            actualPayment = NumberUtil.sub(money, deductiblePrice);
-                        } else {
-                            BigDecimal deductiblePrice =
-                                    NumberUtil.div(totalPoints, pointsDeduction, 0, RoundingMode.FLOOR);
-                            usePoints = NumberUtil.mul(deductiblePrice, pointsDeduction).intValue();
-                            actualPayment = NumberUtil.sub(money, deductiblePrice);
-                        }
+                       // Integer pointsDeduction = info.getPointsDeduction();
+                       // // 当前价格所需要的积分
+                       // Integer priceIntegral =
+                       //         NumberUtil.mul(money, NumberUtil.toBigDecimal(pointsDeduction)).intValue();
+                       // if (NumberUtil.isGreater(NumberUtil.toBigDecimal(totalPoints),
+                       //         NumberUtil.toBigDecimal(priceIntegral))) {
+                       //     usePoints = priceIntegral;
+                       //     BigDecimal deductiblePrice =
+                       //             NumberUtil.div(priceIntegral, pointsDeduction, 0, RoundingMode.FLOOR);
+                       //     actualPayment = NumberUtil.sub(money, deductiblePrice);
+                       // } else {
+                       //     BigDecimal deductiblePrice =
+                       //             NumberUtil.div(totalPoints, pointsDeduction, 0, RoundingMode.FLOOR);
+                       //     usePoints = NumberUtil.mul(deductiblePrice, pointsDeduction).intValue();
+                       //     actualPayment = NumberUtil.sub(money, deductiblePrice);
+                       // }
                         if (NumberUtil.equals(actualPayment, BigDecimal.ZERO)) {
                             // 新增积分数据
-                            PointsRecordDTO dto = new PointsRecordDTO();
-                            dto.setMemberId(stuId);
-                            dto.setBusinessId(actId);
-                            dto.setScoreValue(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue());
-                            dto.setActualPrice(actualPayment);
-                            dto.setIsLowerLevel(YnEnum.NO.value());
-                            dto.setTaskId(Constant.ACTIVITY_APPLY_DEDUCT);
-                            dto.setTaskName("活动报名抵扣的积分");
-                            pointsRecordService.savePointsRecord(dto);
+                            //PointsRecordDTO dto = new PointsRecordDTO();
+                            //dto.setMemberId(stuId);
+                            //dto.setBusinessId(actId);
+                            //dto.setScoreValue(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue());
+                            //dto.setActualPrice(actualPayment);
+                            //dto.setIsLowerLevel(YnEnum.NO.value());
+                            //dto.setTaskId(Constant.ACTIVITY_APPLY_DEDUCT);
+                            //dto.setTaskName("活动报名抵扣的积分");
+                            //pointsRecordService.savePointsRecord(dto);
+                            //插入一条积分记录
+                            ScoreStu add = new ScoreStu();
+                            add.setDay(DateForStr.getInfoDateStr(new Date()));
+                            add.setStuId(stuId);
+                            add.setScoreType(ScoreType.STORE_SCORE.getCode());
+                            add.setTaskId(TaskType.ACTIVITY_APPLY_DEDUCT.getCode());
+                            add.setBusinessId(TaskType.ACTIVITY_APPLY_DEDUCT.getCode());
+                            add.setScoreEvent(TaskType.ACTIVITY_APPLY_DEDUCT.getInfo());
+                            add.setScoreValue(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue());
+                            add.setCreateTime(new Date());
+                            add.setSurplusScore(NumberUtil.sub(BigDecimal.ZERO, usePoints).intValue() + this.scoreStuService.getTotalScore(stuId));
+                            scoreStuMapper.insert(add);
                             // 直接走免费报名接口
                             R register = register(params);
                             Integer code = (Integer) register.get("code");

+ 4 - 1
renren-admin/src/main/java/io/renren/modules/qmgj/service/impl/MemberInfoServiceImpl.java

@@ -38,6 +38,7 @@ import io.renren.modules.qmjz.entity.TaskManage;
 import io.renren.modules.qmjz.entity.WxConsumeInfoEntity;
 import io.renren.modules.qmjz.enums.ScoreType;
 import io.renren.modules.qmjz.enums.TaskType;
+import io.renren.modules.qmjz.mapper.ScoreStuMapper;
 import io.renren.modules.qmjz.service.ScoreStuService;
 import io.renren.modules.qmjz.service.TaskManageService;
 import io.renren.modules.qmjz.service.WxConsumeInfoService;
@@ -94,6 +95,8 @@ public class MemberInfoServiceImpl extends ServiceImpl<MemberInfoDao, MemberInfo
     @Autowired
     private ScoreStuService scoreStuService;
     @Autowired
+    private ScoreStuMapper scoreStuMapper;
+    @Autowired
     private TaskManageService taskManageService;
     @Autowired
     private PointsRecordService pointsRecordService;
@@ -598,7 +601,7 @@ public class MemberInfoServiceImpl extends ServiceImpl<MemberInfoDao, MemberInfo
         if (ObjectUtil.isNull(memberInfoEntity)) {
             throw new RRException("无法查询到当前会员信息", 502);
         }
-        Integer totalPoints = pointsRecordService.getTotalPointsByMemberId(id);
+        Integer totalPoints = scoreStuMapper.getTotalPointsByMemberId(id);
         memberInfoEntity.setTotalPoints(totalPoints);
         return memberInfoEntity;
     }

+ 2 - 1
renren-admin/src/main/java/io/renren/modules/qmjz/enums/TaskType.java

@@ -11,7 +11,8 @@ public enum TaskType {
     WORK_ACTIVITY(6L,"参加兼职/成长会"),
     COMMENT(7L,"评价"),
     DAILY_SIGN(8L,"每日签到"),
-    STUDENT_STATUS(8L,"学籍认证");
+    STUDENT_STATUS(8L,"学籍认证"),
+    ACTIVITY_APPLY_DEDUCT(9L,"活动报名抵扣的积分");
 
     private final Long code;
     private final String info;

+ 2 - 0
renren-admin/src/main/java/io/renren/modules/qmjz/mapper/ScoreStuMapper.java

@@ -12,4 +12,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface ScoreStuMapper extends BaseMapper<ScoreStu> {
     IPage<ScoreStuVo> selectPageList(@Param("page") Page<ScoreStu> page, @Param("bo") ScoreStuBo bo);
+
+    Integer getTotalPointsByMemberId(@Param("memberId") Long member_id);
 }

+ 2 - 0
renren-admin/src/main/java/io/renren/modules/qyh/service/PointsConfigService.java

@@ -19,6 +19,8 @@ public interface PointsConfigService extends IService<PointsConfigEntity> {
 
     PointsConfigEntity info();
 
+    PointsConfigEntity getOne();
+
     void addOrUpdate(PointsConfigEntity pointsConfig);
 }
 

+ 2 - 1
renren-admin/src/main/java/io/renren/modules/qyh/service/impl/MeetPeopleServiceImpl.java

@@ -70,7 +70,8 @@ public class MeetPeopleServiceImpl extends ServiceImpl<MeetPeopleMapper, MeetPeo
     public MeetPeopleEntity getByMeetIdAndMemberId(Long meetId, Long userId) {
         return baseMapper.selectOne(new LambdaQueryWrapper<MeetPeopleEntity>().eq(MeetPeopleEntity::getMeetId, meetId)
             .eq(MeetPeopleEntity::getMemberId, userId).eq(MeetPeopleEntity::getIsCancelMeet, YnEnum.NO.value())
-            .eq(MeetPeopleEntity::getIsDelete, IsDeleteEnum.NORMAL.value()));
+            .eq(MeetPeopleEntity::getIsDelete, IsDeleteEnum.NORMAL.value())
+            .last("limit 1"));
     }
 
     @Override

+ 6 - 0
renren-admin/src/main/java/io/renren/modules/qyh/service/impl/PointsConfigServiceImpl.java

@@ -35,6 +35,12 @@ public class PointsConfigServiceImpl extends ServiceImpl<PointsConfigMapper, Poi
         return baseMapper.selectOne(new LambdaQueryWrapper<PointsConfigEntity>().last("limit 1"));
     }
 
+    @Override
+    public PointsConfigEntity getOne() {
+        return baseMapper.selectOne(new LambdaQueryWrapper<PointsConfigEntity>().eq(PointsConfigEntity::getStatus, 1)
+                .last("limit 1"));
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void addOrUpdate(PointsConfigEntity entity) {

+ 2 - 2
renren-admin/src/main/resources/application.yml

@@ -84,8 +84,8 @@ mybatis-plus:
 wx:
   miniapp:
     configs:
-      - appid: wxdb9bd0f7aa4c40a3
-        secret: f87ae5e8ebd2b3090af86dc94f61b825
+      - appid:  wxd15dbb580e6f1cd3
+        secret: 394255a31fabcd3736a2c102cd54560c
         token: #微信小程序消息服务器配置的token
         aesKey: #微信小程序消息服务器配置的EncodingAESKey
         msgDataFormat: JSON

+ 1 - 1
renren-admin/src/main/resources/mapper/qmgj/MemberInfoDao.xml

@@ -149,7 +149,7 @@
                `VIPNAME`              AS vipname,
                `NAME`                 AS name,
                PHONE,
-               getItemName(5, SEX)    AS SEX,
+               SEX    AS SEX,
                getRegion2(REGION)     AS REGION,
                getSchoolName(COLLEGE) AS COLLEGE,
                getXueDuan(RANK)       AS RANK,

+ 9 - 0
renren-admin/src/main/resources/mapper/qmjz/ScoreStuMapper.xml

@@ -23,4 +23,13 @@
         </where>
         order by a.create_time desc
     </select>
+
+    <select id="getTotalPointsByMemberId" resultType="java.lang.Integer">
+        SELECT
+            SUM(score_value)
+        FROM
+            `tb_score_stu`
+        WHERE
+            `stu_id` = #{memberId}
+    </select>
 </mapper>

+ 1 - 0
renren-admin/src/main/resources/mapper/qyh/MeetPeopleDao.xml

@@ -20,6 +20,7 @@
     </resultMap>
     <select id="myAppointmentPage" resultType="io.renren.modules.qyh.model.vo.MyAppointmentPageVO">
         SELECT
+        DISTINCT
             wmp.meet_id as id,
             wmp.meet_id as meet_people_id,
             we.id AS expert_id,

+ 1 - 1
renren-admin/src/main/resources/pay.properties

@@ -16,6 +16,6 @@ pay.notify.activity.url=https://frp.songlanyun.com/qyh/api/act/register/wx/back
 
 
 # 本地 退款P12文件目录
-refund.file.url = D:\\workspace\\java\\renren-admin\\src\\main\\resources\\statics\\cert\\apiclient_cert.p12
+refund.file.url = D:\\workspace\\java\\renren-admin\\src\\main\\resources\\statics\\wxpay\\dev\\apiclient_cert.p12
 # 线上 退款P12文件目录
 #refund.file.url = /www/wwwroot/cert/apiclient_cert.p12

+ 2 - 2
renren-common/src/main/java/io/renren/common/constant/WeChatConstant.java

@@ -10,11 +10,11 @@ public class WeChatConstant {
     /**
      * 商户号
      */
-    public final static String MCH_ID = "1631528094";
+    public final static String MCH_ID = "1640577480";
     /**
      * 商户密钥
      */
-    public final static String MCH_KEY = "YSLLwujieshengzhang2022LXB161556";
+    public final static String MCH_KEY = "7f279a5423a15118e9cb1fc381631f61";
     /**
      * appid
      */