diff --git a/flossom-common/flossom-common-core/pom.xml b/flossom-common/flossom-common-core/pom.xml index df08981..85ed097 100644 --- a/flossom-common/flossom-common-core/pom.xml +++ b/flossom-common/flossom-common-core/pom.xml @@ -113,6 +113,11 @@ swagger-annotations + + + cn.hutool + hutool-core + diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/IntegralChangTextConstants.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/IntegralChangTextConstants.java new file mode 100644 index 0000000..989b25b --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/IntegralChangTextConstants.java @@ -0,0 +1,26 @@ +package com.flossom.common.core.constant; + +public class IntegralChangTextConstants { + + // 完善用户信息 + public static final String COMPLETE_INFORMATION = "完善信息,获得奖励积分"; + + // 绑定仪器 + public static final String BINDING_INSTRUMENT = "绑定成功,获得奖励积分"; + + // 日常打卡 + public static final String DAILY_CLOCK = "打卡成功,获得奖励积分"; + + // 打卡活动打卡 + public static final String CLOCK_ACTIVITY_CLOCK = "完成,获得奖励积分"; + + // 问卷活动打卡 + public static final String QUESTIONNAIRE_ACTIVITY_CLOCK = "完成,获得奖励积分"; + + // 共创活动打卡 + public static final String TOGETHER_ACTIVITY_CLOCK = "完成,获得奖励积分"; + + // 护理计划 + public static final String NURSING_ACTIVITY_CLOCK = "完成,获得奖励积分"; + +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/ShuYunConstants.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/ShuYunConstants.java deleted file mode 100644 index 2807d61..0000000 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/constant/ShuYunConstants.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.flossom.common.core.constant; - -/** - * 数云 常量 - */ -public class ShuYunConstants { - /** - * 平台内系统用户的唯一标志 - */ - public static final String POINT_SERIAL_NUMBER_PREFIX = "hz_serial_number-"; - -} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/utils/uuid/IdUtils.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/utils/uuid/IdUtils.java index 29acabf..500d50d 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/utils/uuid/IdUtils.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/utils/uuid/IdUtils.java @@ -1,19 +1,23 @@ package com.flossom.common.core.utils.uuid; +import cn.hutool.core.util.RandomUtil; +import com.flossom.common.core.utils.DateUtils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + /** * ID生成器工具类 * * @author flossom */ -public class IdUtils -{ +public class IdUtils { /** * 获取随机UUID * * @return 随机UUID */ - public static String randomUUID() - { + public static String randomUUID() { return UUID.randomUUID().toString(); } @@ -22,8 +26,7 @@ public class IdUtils * * @return 简化的UUID,去掉了横线 */ - public static String simpleUUID() - { + public static String simpleUUID() { return UUID.randomUUID().toString(true); } @@ -32,8 +35,7 @@ public class IdUtils * * @return 随机UUID */ - public static String fastUUID() - { + public static String fastUUID() { return UUID.fastUUID().toString(); } @@ -42,8 +44,16 @@ public class IdUtils * * @return 简化的UUID,去掉了横线 */ - public static String fastSimpleUUID() - { + public static String fastSimpleUUID() { return UUID.fastUUID().toString(true); } + + /** + * 生成花至微信小程序 积分操作 序列号 + * + * @return + */ + public static String generateSequence() { + return "hz_serial_number-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYYMMDDHHMMSSS)) + RandomUtil.randomInt(1000, 9999); + } } diff --git a/flossom-modules/flossom-mini-program/pom.xml b/flossom-modules/flossom-mini-program/pom.xml index 3b54448..74bbd7b 100644 --- a/flossom-modules/flossom-mini-program/pom.xml +++ b/flossom-modules/flossom-mini-program/pom.xml @@ -110,11 +110,6 @@ system ${project.basedir}/src/main/resources/lib/open-platform-sdk-1.0.1.jar - - - cn.hutool - hutool-core - diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxClockLogServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxClockLogServiceImpl.java index 24826f4..1d6a542 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxClockLogServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxClockLogServiceImpl.java @@ -1,14 +1,20 @@ package com.flossom.miniProgram.service.impl; +import com.flossom.common.core.constant.IntegralChangTextConstants; import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.req.WxClockLogReq; import com.flossom.common.core.domain.ret.WxClockLogRet; +import com.flossom.common.core.domain.shuyun.ShuYunPointChange; import com.flossom.common.core.enums.IntegralChangeTypeEnum; +import com.flossom.common.core.enums.ShuYunPointSourceEnum; import com.flossom.common.core.enums.Status; import com.flossom.common.core.mapper.*; import com.flossom.common.core.utils.DateUtils; +import com.flossom.common.core.utils.uuid.IdUtils; import com.flossom.common.security.utils.SecurityUtils; import com.flossom.miniProgram.service.IWxClockLogService; +import com.flossom.miniProgram.utils.shuyun.ShuYunApiUtils; +import com.flossom.miniProgram.utils.shuyun.ShuYunConfig; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -23,6 +29,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -63,6 +70,9 @@ public class WxClockLogServiceImpl implements IWxClockLogService { @Value("${rank.clock.redisKey}") private String CLOCK_RANK_REDIS_KEY; + @Autowired + private ShuYunConfig shuYunConfig; + @Override @Transactional @@ -77,10 +87,13 @@ public class WxClockLogServiceImpl implements IWxClockLogService { queryClockLog.getParams().put("endTime", LocalDateTime.of(now.toLocalDate(), LocalTime.MAX)); List wxClockLogList = wxClockLogMapper.selectWxClockLogList(queryClockLog); WxClockLog wxClockLog = new WxClockLog(); + Boolean isFirstClock = false; + Integer firstClockCredit = 0; if (wxClockLogList != null && wxClockLogList.size() == 1) { // 打卡记录一天只有一条 wxClockLog.setId(wxClockLogList.get(0).getId()); } else { + isFirstClock = true; IntegralClock integralClock = integralClockMapper.selectIntegralClockById(1L); // 日常奖励加分 Long credit = integralClock.getDailyClockCredit(); @@ -93,6 +106,7 @@ public class WxClockLogServiceImpl implements IWxClockLogService { } } if (credit != null && credit != 0) { + firstClockCredit = credit.intValue(); // 增加积分 WxUserMember query = wxUserMemberMapper.selectWxUserMemberById(wxUserMember.getId()); WxUserMember updateEntity = new WxUserMember(); @@ -113,11 +127,6 @@ public class WxClockLogServiceImpl implements IWxClockLogService { wxUserIntegralLog.setCreateBy(SecurityUtils.getLoginUser().getWxUserMember().getNickname()); wxUserIntegralLog.setCreateTime(DateUtils.getNowDate()); wxUserIntegralLogMapper.insertWxUserIntegralLog(wxUserIntegralLog); - - /** - * TODO:当天首次打卡奖励积分,同步数云 - */ - } } wxClockLog.setClockContent(wxClockLogReq.getClockContent()); @@ -200,6 +209,16 @@ public class WxClockLogServiceImpl implements IWxClockLogService { wxClockImgMapper.insertWxClockImg(wxClockImg); } } + + if (isFirstClock && firstClockCredit != null && firstClockCredit > 0) { + /** + * TODO:当天首次打卡奖励积分,同步数云(已完成,未保存操作) + */ + ShuYunPointChange shuYunPointChange = new ShuYunPointChange(wxUserMember.getUnionid(), shuYunConfig.getPlatCode(), shuYunConfig.getShopId(), + IdUtils.generateSequence(), ShuYunPointSourceEnum.OTHER.getSource(), firstClockCredit, + LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), IntegralChangTextConstants.DAILY_CLOCK); + ShuYunApiUtils.pointChange(shuYunPointChange); + } } @Override diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java index 9ff0781..274c451 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java @@ -1,17 +1,22 @@ package com.flossom.miniProgram.service.impl; import com.alibaba.fastjson.JSON; +import com.flossom.common.core.constant.IntegralChangTextConstants; import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.ret.WxBindingInstrumentInfo; import com.flossom.common.core.domain.ret.WxModeRet; +import com.flossom.common.core.domain.shuyun.ShuYunPointChange; import com.flossom.common.core.enums.*; import com.flossom.common.core.exception.ServiceException; import com.flossom.common.core.exception.ServiceReturnCodeException; import com.flossom.common.core.mapper.*; import com.flossom.common.core.utils.DateUtils; import com.flossom.common.core.utils.StringUtils; +import com.flossom.common.core.utils.uuid.IdUtils; import com.flossom.common.security.utils.SecurityUtils; import com.flossom.miniProgram.service.IWxInstrumentService; +import com.flossom.miniProgram.utils.shuyun.ShuYunApiUtils; +import com.flossom.miniProgram.utils.shuyun.ShuYunConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -27,6 +32,7 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoField; import java.util.*; import java.util.stream.Collectors; @@ -90,6 +96,9 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService { @Autowired private WxModeGearMapper wxModeGearMapper; + @Autowired + private ShuYunConfig shuYunConfig; + @Override public List bindingInstrumentList() { /* 绑定了的仪器 不受 "可见小程序标签/可见外部标签" 影响, 去除仪器隐藏的 */ @@ -318,8 +327,12 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService { logger.info("绑定成功,序列号:{},用户ID:{},用户名:{}", serial, wxUserMember.getId(), wxUserMember.getNickname()); /** - * TODO: 仪器绑定与数云同步积分 + * TODO: 仪器绑定与数云同步积分(已完成,未保存操作记录) */ + ShuYunPointChange shuYunPointChange = new ShuYunPointChange(wxUserMember.getUnionid(), shuYunConfig.getPlatCode(), shuYunConfig.getShopId(), + IdUtils.generateSequence(), ShuYunPointSourceEnum.OTHER.getSource(), wxInstrument.getBindingCredit(), + LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), wxInstrument.getName() + IntegralChangTextConstants.BINDING_INSTRUMENT); + ShuYunApiUtils.pointChange(shuYunPointChange); } } } @@ -457,7 +470,7 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService { BeanUtils.copyProperties(wxMode, wxModeRet); if (wxMode.getInstrumentType() == 2) { // IOT仪器才可以设置模式时长 - if(wxMode.getModeTime() != null) { + if (wxMode.getModeTime() != null) { wxModeRet.setModeTime(LocalTime.ofSecondOfDay(wxMode.getModeTime())); } } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java index c5a2ed7..bfa3a5b 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java @@ -1,10 +1,9 @@ package com.flossom.miniProgram.service.impl; -import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSON; import com.flossom.common.core.constant.CacheConstants; import com.flossom.common.core.constant.HttpStatus; -import com.flossom.common.core.constant.ShuYunConstants; +import com.flossom.common.core.constant.IntegralChangTextConstants; import com.flossom.common.core.constant.UserConstants; import com.flossom.common.core.domain.R; import com.flossom.common.core.domain.entity.*; @@ -18,6 +17,7 @@ import com.flossom.common.core.exception.ServiceException; import com.flossom.common.core.mapper.*; import com.flossom.common.core.utils.DateUtils; import com.flossom.common.core.utils.StringUtils; +import com.flossom.common.core.utils.uuid.IdUtils; import com.flossom.common.redis.service.RedisService; import com.flossom.common.security.utils.SecurityUtils; import com.flossom.miniProgram.domain.vo.*; @@ -36,9 +36,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.time.LocalTime; import java.time.format.DateTimeFormatter; -import java.time.temporal.TemporalAdjusters; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -265,10 +263,9 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { loginUserVo.setIntegralText("您已完善个人信息,获得" + integralGlobal.getIntegral().intValue() + "积分"); // TODO: 3、首次完善,通知数云增加积分 (已完成,未保存记录) // 2、完善会员信息增加积分 - String sequence = ShuYunConstants.POINT_SERIAL_NUMBER_PREFIX + LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYYMMDDHHMMSSS)) + RandomUtil.randomInt(1000, 9999); ShuYunPointChange shuYunPointChange = new ShuYunPointChange(wxUserMember.getUnionid(), shuYunConfig.getPlatCode(), shuYunConfig.getShopId(), - sequence, ShuYunPointSourceEnum.OTHER.getSource(), integralGlobal.getIntegral().intValue(), - LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), "首次完善用户信息"); + IdUtils.generateSequence(), ShuYunPointSourceEnum.OTHER.getSource(), integralGlobal.getIntegral().intValue(), + LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), IntegralChangTextConstants.COMPLETE_INFORMATION); ShuYunApiUtils.pointChange(shuYunPointChange); } return loginUserVo; diff --git a/flossom-modules/flossom-system/pom.xml b/flossom-modules/flossom-system/pom.xml index 6536d3d..9910b41 100644 --- a/flossom-modules/flossom-system/pom.xml +++ b/flossom-modules/flossom-system/pom.xml @@ -108,11 +108,6 @@ system ${project.basedir}/src/main/resources/lib/open-platform-sdk-1.0.1.jar - - - cn.hutool - hutool-core -