yangyb 1 settimana fa
parent
commit
73d8ad4cc0

+ 5 - 4
mall-service/src/main/java/com/txz/mall/controller/UserSignController.java

@@ -8,6 +8,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import vo.UserSignDetailVO;
 
@@ -29,15 +30,15 @@ public class UserSignController {
 
     @ApiOperation(value = "签到")
     @PostMapping(value = "/clockIn")
-    public Result clockIn() {
-        userSignService.clockIn();
+    public Result clockIn(@RequestParam Long uid) {
+        userSignService.clockIn(uid);
         return Result.success();
     }
 
     @ApiOperation(value = "今日记录详情")
     @PostMapping(value = "/todayDetail")
-    public Result<List<UserSignDetailVO>> todayDetail() {
-        return Result.success(userSignService.todayDetail());
+    public Result<List<UserSignDetailVO>> todayDetail(@RequestParam Long uid) {
+        return Result.success(userSignService.todayDetail(uid));
     }
 
 }

+ 4 - 0
mall-service/src/main/java/com/txz/mall/dubbo/client/CifAccountDubboServiceClient.java

@@ -81,4 +81,8 @@ public class CifAccountDubboServiceClient {
         return accountDubboService.accomplishGroup(param);
     }
 
+    public Result addRedEnvelope(SignRedEnvelopeParam param) {
+        return accountDubboService.addRedEnvelope(param);
+    }
+
 }

+ 2 - 2
mall-service/src/main/java/com/txz/mall/service/UserSignService.java

@@ -17,10 +17,10 @@ public interface UserSignService extends Service<UserSign> {
      *
      * @return HashMap
      */
-    List<UserSignDetailVO> todayDetail();
+    List<UserSignDetailVO> todayDetail(Long uid);
 
     /**
      * 签到
      */
-    void clockIn();
+    void clockIn(Long uid);
 }

+ 45 - 48
mall-service/src/main/java/com/txz/mall/service/impl/UserSignServiceImpl.java

@@ -1,18 +1,16 @@
 package com.txz.mall.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.txz.mall.constants.Constants;
+import com.txz.cif.enums.BizTypeEnum;
+import com.txz.cif.param.SignRedEnvelopeParam;
 import com.txz.mall.core.AbstractService;
-import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.UserSignMapper;
+import com.txz.mall.dubbo.client.CifAccountDubboServiceClient;
 import com.txz.mall.dubbo.client.OperatingConfigDubboServiceClient;
-import com.txz.mall.model.SystemGroupData;
 import com.txz.mall.model.UserSign;
-import com.txz.mall.service.SystemGroupDataService;
 import com.txz.mall.service.UserSignService;
+import com.txz.mall.util.OrderUtils;
 import com.txz.operating.dto.ConfigDTO;
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,11 +19,12 @@ import tk.mybatis.mapper.entity.Example;
 import vo.UserSignDetailVO;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 
 /**
@@ -35,32 +34,39 @@ import java.util.stream.Collectors;
 @Transactional
 public class UserSignServiceImpl extends AbstractService<UserSign> implements UserSignService {
 
-    private static final long USER_ID = 1;
-    private static final String SIGN_CODE = "user_code";
+    private static final String USER_SIGN_INFO = "user_sign_info";
 
     @Resource
     private UserSignMapper userSignMapper;
-    @Resource
-    private SystemGroupDataService systemGroupDataService;
+
     @Resource
     private OperatingConfigDubboServiceClient configDubboServiceClient;
+    @Resource
+    private CifAccountDubboServiceClient accountDubboServiceClient;
 
     @Override
-    public List<UserSignDetailVO> todayDetail() {
-        ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(SIGN_CODE);
-        return JSONObject.parseArray(configByCode.getValueInfo(), UserSignDetailVO.class);
+    public List<UserSignDetailVO> todayDetail(Long uid) {
+        ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(USER_SIGN_INFO);
+        List<UserSignDetailVO> list = JSONObject.parseArray(configByCode.getValueInfo(), UserSignDetailVO.class);
+        int continuousDays = getContinuousDays(uid);
+        for (int i = 0; i < list.size(); i++) {
+            if (i == continuousDays - 1) {
+                list.get(i).setStatus(1);
+            }
+        }
+        return list;
     }
 
     @Override
-    public void clockIn() {
+    public void clockIn(Long uid) {
         // 2. 判断今天是否已经签到
-        boolean hasSignedToday = hasSignedToday(USER_ID);
+        boolean hasSignedToday = hasSignedToday(uid);
         if (hasSignedToday) {
             throw new RuntimeException("今天已经签到过了!");
         }
 
         // 3. 获取昨天的签到记录,判断是否连续签到
-        UserSign yesterdaySign = getYesterdaySign(USER_ID);
+        UserSign yesterdaySign = getYesterdaySign(uid);
         int continuousDays = 1;
 
         if (yesterdaySign != null && isContinuous(yesterdaySign.getCreateDay())) {
@@ -73,33 +79,33 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
         //  满7天重置为0
         if (continuousDays == 8) {
             //注意  是满7天才发放奖励  每日签到不送
-            giveReward(continuousDays);
+            giveReward(uid);
             continuousDays = 0;
         }
 
         // 5. 插入新的签到记录
         UserSign userSign = new UserSign();
-        userSign.setUid(USER_ID);
+        userSign.setUid(uid);
         userSign.setCreateDay(new Date());
         userSign.setContinuousDays(continuousDays);
         save(userSign);
     }
 
     // 判断今天是否已经签到
-    private boolean hasSignedToday(Long USER_ID) {
+    private boolean hasSignedToday(Long uid) {
         Condition condition = new Condition(UserSign.class);
         Example.Criteria criteria = condition.createCriteria();
-        criteria.andEqualTo("uid", USER_ID);
+        criteria.andEqualTo("uid", uid);
         criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "%");
         return !userSignMapper.selectByCondition(condition).isEmpty();
     }
 
     // 获取昨天的签到记录
-    private UserSign getYesterdaySign(Long USER_ID) {
+    private UserSign getYesterdaySign(Long uid) {
         Date yesterday = DateUtils.addDays(new Date(), -1);
         Condition condition = new Condition(UserSign.class);
         Example.Criteria criteria = condition.createCriteria();
-        criteria.andEqualTo("uid", USER_ID);
+        criteria.andEqualTo("uid", uid);
         criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(yesterday) + "%");
         List<UserSign> list = userSignMapper.selectByCondition(condition);
         return list.isEmpty() ? null : list.get(0);
@@ -134,32 +140,23 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
     }
 
     // 根据连续签到天数发放奖励
-    private void giveReward(int continuousDays) {
+    private void giveReward(Long uid) {
         int reward = 0;
-//        List<SystemGroupData> systemGroupData = groupData();
-//        for (SystemGroupData groupData : systemGroupData) {
-//            if (StringUtils.isNotBlank(groupData.getValue())) {
-//                List<GroupDataFormItemCheckVO> fields = com.alibaba.fastjson.JSONObject.parseObject(groupData.getValue(), GroupDataFormCheckVO.class).getFields();
-//                reward += fields.stream().filter(field -> field.getName().equals(Constants.SIGN_TYPE_GOLD_TITLE)).map(GroupDataFormItemCheckVO::getValue).map(Integer::valueOf).reduce(0, Integer::sum);
-//            }
-//        }
-
-        // todo 发到个人用户
-    }
-
-    private List<SystemGroupData> groupData() {
-        ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(SIGN_CODE);
-
-
-        List<SystemGroupData> systemGroupData = systemGroupDataService.configDetail(Constants.GROUP_DATA_ID_SIGN.longValue(), Constants.GROUP_DATA_STATUS_NORMAL);
-        if (CollectionUtils.isEmpty(systemGroupData)) {
-            throw new ServiceException("系统配置异常");
+        ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(USER_SIGN_INFO);
+        List<UserSignDetailVO> userSignList = JSONObject.parseArray(configByCode.getValueInfo(), UserSignDetailVO.class);
+        UserSignDetailVO maxDaysReward = userSignList.stream()
+                .max(Comparator.comparing(UserSignDetailVO::getDays))
+                .orElse(null);
+        if (maxDaysReward != null) {
+            reward = maxDaysReward.getValue();
         }
-        systemGroupData = systemGroupData.stream().filter(d -> StringUtils.isNotBlank(d.getValue())).collect(Collectors.toList());
-        if (CollectionUtils.isEmpty(systemGroupData)) {
-            throw new ServiceException("配置内容为空");
-        }
-        return systemGroupData;
+        // todo 发到个人用户
+        SignRedEnvelopeParam envelopeParam = new SignRedEnvelopeParam();
+        envelopeParam.setUserId(uid);
+        envelopeParam.setAmount(new BigDecimal(reward));
+        envelopeParam.setBizType(BizTypeEnum.SIGN_RED_ENVELOPE);
+        envelopeParam.setTransTime(new Date());
+        envelopeParam.setOrderNo(OrderUtils.getSignCode());
+        accountDubboServiceClient.addRedEnvelope(envelopeParam);
     }
-
 }

+ 12 - 0
mall-service/src/main/java/com/txz/mall/util/OrderUtils.java

@@ -14,6 +14,10 @@ public class OrderUtils {
      * 订单类别头
      */
     private static final String ORDER_CODE = "DD";
+    /**
+     * 签到类别头
+     */
+    private static final String SIGN_CODE = "QD";
     /**
      * 退货类别头
      */
@@ -103,6 +107,14 @@ public class OrderUtils {
         return ORDER_CODE + getCode();
     }
 
+    /**
+     * 生成签到编码(调用方法)
+     */
+
+    public static String getSignCode() {
+        return SIGN_CODE + getCode();
+    }
+
     /**
      * 生成提现单号编码(调用方法)
      */

+ 5 - 2
mall-service/src/main/java/vo/StorePinkDetailVO.java

@@ -19,10 +19,10 @@ public class StorePinkDetailVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "拼团ID")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "用户id")
-    private Integer uid;
+    private Long uid;
 
     @ApiModelProperty(value = "订单编号")
     private String orderId;
@@ -54,6 +54,9 @@ public class StorePinkDetailVO implements Serializable {
     @ApiModelProperty(value = "支付时间")
     private Date payTime;
 
+    @ApiModelProperty(value = "加团时间")
+    private Date createTime;
+
     @ApiModelProperty(value = "奖励佣金")
     private BigDecimal commission;
 

+ 4 - 4
mall-service/src/main/java/vo/UserSignDetailVO.java

@@ -16,14 +16,14 @@ public class UserSignDetailVO implements Serializable {
     private static final long serialVersionUID = 9215241889318610262L;
 
     @ApiModelProperty(value = "天数")
-    private String days;
+    private Integer days;
 
     @ApiModelProperty(value = "签到类型  1-金币  2-积分  3-经验")
-    private String type;
+    private Integer type;
 
     @ApiModelProperty(value = "值")
-    private String value;
+    private Integer value;
 
     @ApiModelProperty(value = "状态 0-未签到  1-已签到")
-    private String status;
+    private Integer status;
 }