Переглянути джерело

完善小程序红包逻辑

cgp 1 день тому
батько
коміт
c975936c2b

+ 1 - 1
fs-service/src/main/java/com/fs/his/dto/CollectionUserPhoneDTO.java

@@ -33,5 +33,5 @@ public class CollectionUserPhoneDTO {
 
     @NotBlank(message = "userId不能为空")
     @ApiModelProperty(value = "当前用户id")
-    private String userId;
+    private Long userId;
 }

+ 4 - 4
fs-service/src/main/java/com/fs/qw/service/impl/FsCompanyQrcPhoneServiceImpl.java

@@ -76,6 +76,7 @@ public class FsCompanyQrcPhoneServiceImpl implements IFsCompanyQrcPhoneService {
         FsCompanyQrcPhone qrcPhone = new FsCompanyQrcPhone();
         BeanCopyUtils.copy(userPhoneDTO, qrcPhone);
         qrcPhone.setCreateTime(DateUtils.getNowDate());
+        qrcPhone.setUserId(userPhoneDTO.getUserId());
         // 2. 插入手机号(捕获唯一键冲突)
         try {
             phoneMapper.insert(qrcPhone);
@@ -85,9 +86,7 @@ public class FsCompanyQrcPhoneServiceImpl implements IFsCompanyQrcPhoneService {
         }
         // 3. 下发待领取红包记录(只新增记录,不实际发红包)
         FsCompanyQrcRedPackageRecord redPackageRecord = buildRedPackageRecord(userPhoneDTO);
-        redPackageRecordService.insert(redPackageRecord);
-        // 4. 返回成功
-        return 1;
+        return redPackageRecordService.insert(redPackageRecord);
     }
 
     /**
@@ -100,8 +99,9 @@ public class FsCompanyQrcPhoneServiceImpl implements IFsCompanyQrcPhoneService {
 
     private FsCompanyQrcRedPackageRecord buildRedPackageRecord(CollectionUserPhoneDTO userPhoneDTO) {
         FsCompanyQrcRedPackageRecord redPackageRecord=new FsCompanyQrcRedPackageRecord();
-        redPackageRecord.setUserId(Long.valueOf(userPhoneDTO.getUserId()));
+        redPackageRecord.setUserId(userPhoneDTO.getUserId());
         redPackageRecord.setCompanyUserId(userPhoneDTO.getCompanyUserId());
+        redPackageRecord.setCollectType(BigDecimal.ONE.intValue());
         QrcRedPackageConfigVO qrcRedPackageConfigAmount = getQrcRedPackageConfigAmount();
         if (BigDecimal.ONE.intValue()==qrcRedPackageConfigAmount.getOpen()){
             redPackageRecord.setAmount(qrcRedPackageConfigAmount.getAmount());//红包金额

+ 14 - 0
fs-service/src/main/java/com/fs/qw/service/impl/FsCompanyQrcRedPackageRecordServiceImpl.java

@@ -89,6 +89,20 @@ public class FsCompanyQrcRedPackageRecordServiceImpl implements IFsCompanyQrcRed
 
     @Override
     public FsCompanyQrcRedPackageRecord getRedPackageRecordByUserId(Long userId) {
+        // 4. 校验红包配置(是否开启)
+        String configJson = configService.selectConfigByKey(QRC_RED_PACKAGE_CONFIG_KEY);
+        if (StringUtils.isEmpty(configJson)) {
+            throw new CustomException("获取红包配置错误,请联系管理员");
+        }
+        try {
+            JSONObject config = JSON.parseObject(configJson);
+            if (!"1".equals(config.getString("open"))) {
+                return new FsCompanyQrcRedPackageRecord();
+            }
+        } catch (Exception e) {
+            log.error("二维码红包配置解析异常, json={}", configJson, e);
+            return new FsCompanyQrcRedPackageRecord();
+        }
         return recordMapper.getRedPackageRecordByUserId(userId);
     }
 

+ 7 - 0
fs-user-app/src/main/java/com/fs/app/controller/ShareMaterialController.java

@@ -58,6 +58,12 @@ public class ShareMaterialController extends AppBaseController
      */
     @PostMapping("/submitPhone")
     public R submitPhone(@RequestBody CollectionUserPhoneDTO param){
+        long userId;
+        try {
+            userId = Long.parseLong(getUserId());
+        }catch (Exception e){
+            return R.error("用户登录信息异常");
+        }
         final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
         try {
             WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
@@ -65,6 +71,7 @@ public class ShareMaterialController extends AppBaseController
             WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
             String phoneNumber = phoneNoInfo.getPhoneNumber();
             param.setUserPhone(phoneNumber);
+            param.setUserId(userId);
             int result = companyQrcPhoneService.submitPhone(param);
             return result>0?R.ok():R.error("提交失败");
         } catch (WxErrorException e) {