| @@ -1,5 +1,5 @@ | |||||
| INSERT INTO `mallink`.`wx_score_rules`(`id`, `tenant_id`, `type`, `scale`) | INSERT INTO `mallink`.`wx_score_rules`(`id`, `tenant_id`, `type`, `scale`) | ||||
| select CEILING(RAND()*90000000000+10000000000),`tenant_id`,4,`scale` from wx_score_rules where type = 2 and scale > 10; | select CEILING(RAND()*90000000000+10000000000),`tenant_id`,4,`scale` from wx_score_rules where type = 2 and scale > 10; | ||||
| --集团版手动处理,(集团版不存在这类数据,子集团数据与原集团规则相等) | |||||
| --集团版手动处理,(集团版不存在这类数据,子集团生日倍率数据与原集团规则相等) | |||||
| --目前集团版(1008-1020-----1028)(1026-1027-----1025) | --目前集团版(1008-1020-----1028)(1026-1027-----1025) | ||||
| @@ -0,0 +1,8 @@ | |||||
| update wx_score_rules set rules = concat(SUBSTRING(rules,1,char_length(rules)-1), | |||||
| ",{\"id\": 17, \"desc\": \"每日签到\", \"step\": 1, \"limit\": 1, \"score\": 0}", | |||||
| ",{\"id\": 18, \"desc\": \"连续签到7天\", \"step\": 1, \"limit\": 1, \"score\": 0}", | |||||
| ",{\"id\": 19, \"desc\": \"连续签到14天\", \"step\": 1, \"limit\": 1, \"score\": 0}", | |||||
| ",{\"id\": 20, \"desc\": \"连续签到28天\", \"step\": 1, \"limit\": 1, \"score\": 0}", | |||||
| RIGHT(rules,1)) where type = 2 | |||||
| --type=2 积分规则,每日登陆去掉-- 缓存--缓存--缓存 | |||||
| @@ -0,0 +1,161 @@ | |||||
| package com.iformall.controller; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCUserBasicSign; | |||||
| import com.iformall.domain.po.WxCreditHistory; | |||||
| import com.iformall.enums.EnumScoreType; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.WxCUserBasicSignService; | |||||
| import com.iformall.service.WxCreditHistoryService; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.HashMap; | |||||
| import java.util.Map; | |||||
| @RestController | |||||
| @RequestMapping("/api/userSign") | |||||
| @Api(description = "签到接口") | |||||
| public class WxCUserBasicSignController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCUserBasicSignService wxCUserBasicSignService; | |||||
| @ApiOperation("用户签到列表") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), | |||||
| @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) | |||||
| public ResultData list(@ModelAttribute WxCUserBasicSign wxCUserBasicSign, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::list"); | |||||
| if (null == wxCUserBasicSign){ | |||||
| wxCUserBasicSign = new WxCUserBasicSign(); | |||||
| } | |||||
| Long memberId; | |||||
| try { | |||||
| memberId = getMemberId(); | |||||
| } catch (MallinkException me) { | |||||
| return new ResultData(ErrorCode.getByCode(me.getErrorCode())); | |||||
| } | |||||
| // wxCUserBasicSign.updateTenantInfo(getTenantInfo()); | |||||
| wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId()); | |||||
| wxCUserBasicSign.setUserId(memberId); | |||||
| final PageInfo<WxCUserBasicSign> page = wxCUserBasicSignService.listAsPage(wxCUserBasicSign, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("签到") | |||||
| @PostMapping("signIn") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)}) | |||||
| public ResultData signIn(@RequestBody WxCUserBasicSign wxCUserBasicSign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn"); | |||||
| if (null == wxCUserBasicSign){ | |||||
| wxCUserBasicSign = new WxCUserBasicSign(); | |||||
| } | |||||
| Long memberId; | |||||
| try { | |||||
| memberId = getMemberId(); | |||||
| } catch (MallinkException me) { | |||||
| return new ResultData(ErrorCode.getByCode(me.getErrorCode())); | |||||
| } | |||||
| // wxCUserBasicSign.updateTenantInfo(getTenantInfo()); | |||||
| wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId()); | |||||
| wxCUserBasicSign.setUserId(memberId); | |||||
| WxCUserBasicSign todaySign = wxCUserBasicSignService.getTodaySignIn(wxCUserBasicSign); | |||||
| if(todaySign == null){ | |||||
| try { | |||||
| todaySign = wxCUserBasicSignService.signIn(wxCUserBasicSign); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR); | |||||
| } | |||||
| if(todaySign == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"type"); | |||||
| } | |||||
| return new ResultData(todaySign); | |||||
| }else{ | |||||
| return new ResultData(ErrorCode.MEM_IS_SIGNIN,todaySign); | |||||
| } | |||||
| } | |||||
| @ApiOperation("签到状态") | |||||
| @GetMapping("signInStatus") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)}) | |||||
| public ResultData signInStatus() { | |||||
| logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn"); | |||||
| WxCUserBasicSign wxCUserBasicSign = new WxCUserBasicSign(); | |||||
| Long memberId; | |||||
| try { | |||||
| memberId = getMemberId(); | |||||
| } catch (MallinkException me) { | |||||
| return new ResultData(ErrorCode.getByCode(me.getErrorCode())); | |||||
| } | |||||
| // wxCUserBasicSign.updateTenantInfo(getTenantInfo()); | |||||
| wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId()); | |||||
| wxCUserBasicSign.setUserId(memberId); | |||||
| Map<String, Integer> map = wxCUserBasicSignService.getLastSignIn(wxCUserBasicSign); | |||||
| return new ResultData(map); | |||||
| } | |||||
| @ApiOperation("签到领取") | |||||
| @PostMapping("signInCredit") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)}) | |||||
| public ResultData signInCredit(@RequestBody WxCreditHistory wxCreditHistory) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn"); | |||||
| if (null == wxCreditHistory){ | |||||
| wxCreditHistory = new WxCreditHistory(); | |||||
| } | |||||
| Long memberId; | |||||
| try { | |||||
| memberId = getMemberId(); | |||||
| } catch (MallinkException me) { | |||||
| return new ResultData(ErrorCode.getByCode(me.getErrorCode())); | |||||
| } | |||||
| WxCUserBasicSign wxCUserBasicSign = new WxCUserBasicSign(); | |||||
| wxCUserBasicSign.setTenantId(getFinalTenantId()); | |||||
| wxCUserBasicSign.setUserId(memberId); | |||||
| Map<String, Integer> map = wxCUserBasicSignService.getLastSignIn(wxCUserBasicSign); | |||||
| int continueMonthSign = map.get("continueMonthSign");//本月连续签到天数 | |||||
| int signInSevenDay = map.get("signInSevenDay");//7日连续奖励 | |||||
| int signInFTDay = map.get("signInFTDay");//14日连续奖励 | |||||
| int signInTEDay = map.get("signInTEDay");//28日连续奖励 | |||||
| if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_SEVENDAY.getCode())){ | |||||
| if(continueMonthSign >= 7 && signInSevenDay == 0){ | |||||
| wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_SEVENDAY); | |||||
| return new ResultData(); | |||||
| } | |||||
| return new ResultData(ErrorCode.MEM_MONTH_IS_USED); | |||||
| }else if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_FTDAY.getCode())){ | |||||
| if(continueMonthSign >= 14 && signInFTDay == 0){ | |||||
| wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_FTDAY); | |||||
| return new ResultData(); | |||||
| } | |||||
| return new ResultData(ErrorCode.MEM_MONTH_IS_USED); | |||||
| }else if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_TEDAY.getCode())){ | |||||
| if(continueMonthSign >= 28 && signInTEDay == 0){ | |||||
| wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_TEDAY); | |||||
| return new ResultData(); | |||||
| } | |||||
| return new ResultData(ErrorCode.MEM_MONTH_IS_USED); | |||||
| }else{ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"creditType"); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1014,7 +1014,7 @@ public class WxUserGrantController extends BaseController { | |||||
| wxCUserBasicInfoService.updateQrCode(wxCUserBasicInfo); | wxCUserBasicInfoService.updateQrCode(wxCUserBasicInfo); | ||||
| } | } | ||||
| } | } | ||||
| RedisCacheUtils.cache(objectCommonRedisTemplate, key, qrCode, Constant.S_D_EXPIRE); | |||||
| RedisCacheUtils.cache(objectCommonRedisTemplate, key, qrCode, 0); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("getUserinfoQrCode error.",e); | logger.error("getUserinfoQrCode error.",e); | ||||
| @@ -396,6 +396,8 @@ public enum ErrorCode{ | |||||
| CREDIT_NOT_ENOUGH(13101, "积分不够扣减值"), | CREDIT_NOT_ENOUGH(13101, "积分不够扣减值"), | ||||
| USER_NOT_MEMBER(13102, "该用户不是小程序会员"), | USER_NOT_MEMBER(13102, "该用户不是小程序会员"), | ||||
| OUT_OF_CREDIT(13103, "超出最大积分"), | OUT_OF_CREDIT(13103, "超出最大积分"), | ||||
| MEM_IS_SIGNIN(13104, "该用户已签到"), | |||||
| MEM_MONTH_IS_USED(13105, "该用户本月已领取或未到领取条件"), | |||||
| /** | /** | ||||
| @@ -76,6 +76,13 @@ public class BaseMyBatisConfiguration { | |||||
| basicInfoSharding.setRule(EnumShardingRule.HASH.getCode()); | basicInfoSharding.setRule(EnumShardingRule.HASH.getCode()); | ||||
| shardingList.add(basicInfoSharding); | shardingList.add(basicInfoSharding); | ||||
| ShardingSphere basicSignSharding = new ShardingSphere(); | |||||
| basicSignSharding.setColumn("tenant_id"); | |||||
| basicSignSharding.setTableName("wx_c_user_basic_sign"); | |||||
| basicSignSharding.setCount(100); | |||||
| basicSignSharding.setRule(EnumShardingRule.HASH.getCode()); | |||||
| shardingList.add(basicSignSharding); | |||||
| ShardingSphere wxbasicChildSharding = new ShardingSphere(); | ShardingSphere wxbasicChildSharding = new ShardingSphere(); | ||||
| wxbasicChildSharding.setColumn("tenant_id"); | wxbasicChildSharding.setColumn("tenant_id"); | ||||
| wxbasicChildSharding.setTableName("wx_c_user_basic_child"); | wxbasicChildSharding.setTableName("wx_c_user_basic_child"); | ||||
| @@ -0,0 +1,67 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.Date; | |||||
| @TableName(value = "wx_c_user_basic_sign") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxCUserBasicSign extends TenantEntity { | |||||
| @TableField(exist = false) | |||||
| public static final Integer SIGNIN_TYPE = 1; | |||||
| protected Long id; | |||||
| @io.swagger.annotations.ApiModelProperty(value="userId",name="userId") | |||||
| private Long userId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="1:签到",name="type") | |||||
| private Integer type; | |||||
| @io.swagger.annotations.ApiModelProperty(value="签到时间",name="signinDate") | |||||
| private Date signinDate; | |||||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") | |||||
| private Date createDate; | |||||
| @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateDate") | |||||
| private Date updateDate; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当月连续签到天数",name="continueMonthSign") | |||||
| private Integer continueMonthSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当月累计签到天数",name="countMonthSign") | |||||
| private Integer countMonthSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当年连续签到天数",name="continueYearSign") | |||||
| private Integer continueYearSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当年累计签到天数",name="countYearSign") | |||||
| private Integer countYearSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间连续签到天数",name="continueSign") | |||||
| private Integer continueSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="截止当前签到时间累计签到天数",name="countSign") | |||||
| private Integer countSign; | |||||
| @io.swagger.annotations.ApiModelProperty(value="备注",name="mark") | |||||
| private String mark; | |||||
| @TableField(exist = false) | |||||
| private Date startDate; | |||||
| @TableField(exist = false) | |||||
| private Date endDate; | |||||
| @TableField(exist = false) | |||||
| private Integer begin; | |||||
| @TableField(exist = false) | |||||
| private Integer limit; | |||||
| } | |||||
| @@ -48,7 +48,6 @@ public class WxScoreRules extends BaseTenantEntity { | |||||
| " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}" + | " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}" + | ||||
| "]}," + | "]}," + | ||||
| "{\"id\":3,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"绑定车牌1个\"}," + | "{\"id\":3,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"绑定车牌1个\"}," + | ||||
| "{\"id\":5,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权个人信息\"}," + | |||||
| "{\"id\":6,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权手机号\"}," + | "{\"id\":6,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权手机号\"}," + | ||||
| "{\"id\":7,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}" + | "{\"id\":7,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}" + | ||||
| "]"; | "]"; | ||||
| @@ -56,7 +55,7 @@ public class WxScoreRules extends BaseTenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private static final String creditDefaultRules = | private static final String creditDefaultRules = | ||||
| "[" + | "[" + | ||||
| "{\"id\":1,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"每日登陆\"}," + | |||||
| // "{\"id\":1,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"每日登陆\"}," + | |||||
| "{\"id\":2,\"childs\":[" + | "{\"id\":2,\"childs\":[" + | ||||
| " {\"businessId\":1,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}," + | " {\"businessId\":1,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}," + | ||||
| " {\"businessId\":2,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}," + | " {\"businessId\":2,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}," + | ||||
| @@ -71,10 +70,12 @@ public class WxScoreRules extends BaseTenantEntity { | |||||
| " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}" + | " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":0 ,\"desc\":\"线上交易1元\"}" + | ||||
| "]}," + | "]}," + | ||||
| "{\"id\":3,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"绑定车牌1个\"}," + | "{\"id\":3,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"绑定车牌1个\"}," + | ||||
| "{\"id\":5,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权个人信息\"}," + | |||||
| "{\"id\":6,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权手机号\"}," + | "{\"id\":6,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权手机号\"}," + | ||||
| "{\"id\":7,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}," + | "{\"id\":7,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}," + | ||||
| "{\"id\":8,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}" + | |||||
| "{\"id\": 17, \"desc\": \"每日签到\", \"step\": 1, \"limit\": 1, \"score\": 0},"+ | |||||
| "{\"id\": 18, \"desc\": \"连续签到7天\", \"step\": 1, \"limit\": 1, \"score\": 0},"+ | |||||
| "{\"id\": 19, \"desc\": \"连续签到14天\", \"step\": 1, \"limit\": 1, \"score\": 0},"+ | |||||
| "{\"id\": 20, \"desc\": \"连续签到28天\", \"step\": 1, \"limit\": 1, \"score\": 0},"+ | |||||
| "]"; | "]"; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @@ -20,7 +20,12 @@ public enum EnumScoreType { | |||||
| ACTIVITY_JOIN(13, "活动报名"), | ACTIVITY_JOIN(13, "活动报名"), | ||||
| CLEAN_CREDIT(14, "积分清零计划"), | CLEAN_CREDIT(14, "积分清零计划"), | ||||
| GAME_LES_CREDIT(15, "游戏消耗积分"), | GAME_LES_CREDIT(15, "游戏消耗积分"), | ||||
| GAME_ADD_CREDIT(16, "游戏奖励积分"),; | |||||
| GAME_ADD_CREDIT(16, "游戏奖励积分"), | |||||
| SIGN_IN_DAY(17, "每日签到"), | |||||
| SIGN_IN_SEVENDAY(18, "连续签到7天"), | |||||
| SIGN_IN_FTDAY(19, "连续签到14天"), | |||||
| SIGN_IN_TEDAY(20, "连续签到28天"),; | |||||
| public static EnumScoreType getEnum(Integer code) { | public static EnumScoreType getEnum(Integer code) { | ||||
| for (EnumScoreType value : values()) { | for (EnumScoreType value : values()) { | ||||
| @@ -0,0 +1,13 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCUserBasicSign; | |||||
| import java.util.List; | |||||
| public interface WxCUserBasicSignMapper extends CommonMapper<WxCUserBasicSign, Long> { | |||||
| List<WxCUserBasicSign> findList(WxCUserBasicSign record); | |||||
| WxCUserBasicSign getLastSignIn(WxCUserBasicSign record); | |||||
| } | |||||
| @@ -41,4 +41,6 @@ public interface WxCreditHistoryMapper extends CommonMapper<WxCreditHistory, Lon | |||||
| Integer getLesCreditSummary(WxCreditHistory wxCreditHistory); | Integer getLesCreditSummary(WxCreditHistory wxCreditHistory); | ||||
| List<MerchantCreditRankingVo> merchantCreditRanking(WxCreditHistory record); | List<MerchantCreditRankingVo> merchantCreditRanking(WxCreditHistory record); | ||||
| int monthCount(WxCreditHistory record); | |||||
| } | } | ||||
| @@ -0,0 +1,28 @@ | |||||
| package com.iformall.service; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxCUserBasicSign; | |||||
| import com.iformall.enums.EnumScoreType; | |||||
| import java.util.Map; | |||||
| public interface WxCUserBasicSignService { | |||||
| /** | |||||
| * 根据实体查询分页列表 | |||||
| * | |||||
| * @param record | |||||
| * @param pageIndex | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCUserBasicSign> listAsPage(WxCUserBasicSign record, Integer pageIndex, Integer pageSize); | |||||
| WxCUserBasicSign signIn(WxCUserBasicSign record); | |||||
| WxCUserBasicSign getTodaySignIn(WxCUserBasicSign record); | |||||
| Map<String,Integer> getLastSignIn(WxCUserBasicSign record); | |||||
| void signInCreditHistory(WxCUserBasicSign record, EnumScoreType enumScoreType); | |||||
| } | |||||
| @@ -85,4 +85,5 @@ public interface WxCreditHistoryService { | |||||
| Integer getLesCreditSummary(WxCreditHistory wxCreditHistory); | Integer getLesCreditSummary(WxCreditHistory wxCreditHistory); | ||||
| PageInfo<MerchantCreditRankingVo> listAsPageMcrv(WxCreditHistory record, Integer pageIndex, Integer pageSize); | PageInfo<MerchantCreditRankingVo> listAsPageMcrv(WxCreditHistory record, Integer pageIndex, Integer pageSize); | ||||
| } | } | ||||
| @@ -0,0 +1,204 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.WxCUserBasicSign; | |||||
| import com.iformall.domain.po.WxCreditHistory; | |||||
| import com.iformall.enums.EnumScoreType; | |||||
| import com.iformall.enums.EnumUserType; | |||||
| import com.iformall.mapper.WxCUserBasicSignMapper; | |||||
| import com.iformall.mapper.WxCreditHistoryMapper; | |||||
| import com.iformall.service.WxCUserBasicSignService; | |||||
| import com.iformall.service.WxCreditHistoryService; | |||||
| import com.iformall.utils.DateUtils; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import org.springframework.transaction.annotation.Transactional; | |||||
| import java.text.DateFormat; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.*; | |||||
| import static java.util.Calendar.DAY_OF_MONTH; | |||||
| @Service | |||||
| @Slf4j | |||||
| public class WxCUserBasicSignServiceImpl implements WxCUserBasicSignService { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| WxCUserBasicSignMapper wxCUserBasicSignMapper; | |||||
| @Autowired | |||||
| WxCreditHistoryService wxCreditHistoryService; | |||||
| @Autowired | |||||
| WxCreditHistoryMapper wxCreditHistoryMapper; | |||||
| @Override | |||||
| public PageInfo<WxCUserBasicSign> listAsPage(WxCUserBasicSign record, Integer pageIndex, Integer pageSize) { | |||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicSignMapper.findList(record)); | |||||
| } | |||||
| @Transactional(rollbackFor = {Exception.class}) | |||||
| @Override | |||||
| public WxCUserBasicSign signIn(WxCUserBasicSign record) { | |||||
| if(record.getType() == null){ | |||||
| record.setType(WxCUserBasicSign.SIGNIN_TYPE); | |||||
| } | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| record.setId(idWorker.nextId()); | |||||
| Date today = new Date(); | |||||
| record.setCreateDate(today); | |||||
| record.setUpdateDate(today); | |||||
| if(record.getType().equals(WxCUserBasicSign.SIGNIN_TYPE)){ | |||||
| record.setSigninDate(DateUtils.getDateZero(today)); | |||||
| WxCUserBasicSign lastSignIn = wxCUserBasicSignMapper.getLastSignIn(record); | |||||
| if(lastSignIn == null){ | |||||
| record.setContinueMonthSign(1); | |||||
| record.setCountMonthSign(1); | |||||
| record.setContinueYearSign(1); | |||||
| record.setCountYearSign(1); | |||||
| record.setContinueSign(1); | |||||
| record.setCountSign(1); | |||||
| wxCUserBasicSignMapper.insert(record); | |||||
| }else{ | |||||
| long daysL = DateUtils.startToEnd(lastSignIn.getSigninDate(), today); | |||||
| int daysI = new Long(daysL).intValue(); | |||||
| if(daysI == 0){ | |||||
| return lastSignIn; | |||||
| } | |||||
| record.setCountSign(lastSignIn.getCountSign() + 1); | |||||
| if(daysI == 1){ | |||||
| record.setContinueSign(lastSignIn.getContinueSign() + 1); | |||||
| }else{ | |||||
| record.setContinueSign(1); | |||||
| } | |||||
| if(DateUtils.getYear(today) == DateUtils.getYear(lastSignIn.getSigninDate())){ | |||||
| record.setCountYearSign(lastSignIn.getCountYearSign() + 1); | |||||
| if(daysI == 1){ | |||||
| record.setContinueYearSign(lastSignIn.getContinueYearSign() + 1); | |||||
| }else{ | |||||
| record.setContinueYearSign(1); | |||||
| } | |||||
| if(DateUtils.getMonth(today) == DateUtils.getMonth(lastSignIn.getSigninDate())){ | |||||
| record.setCountMonthSign(lastSignIn.getCountMonthSign() + 1); | |||||
| if(daysI == 1){ | |||||
| record.setContinueMonthSign(lastSignIn.getContinueMonthSign() + 1); | |||||
| }else{ | |||||
| record.setContinueMonthSign(1); | |||||
| } | |||||
| }else{ | |||||
| record.setCountMonthSign(1); | |||||
| record.setContinueMonthSign(1); | |||||
| } | |||||
| }else{ | |||||
| record.setContinueMonthSign(1); | |||||
| record.setCountMonthSign(1); | |||||
| record.setContinueYearSign(1); | |||||
| record.setCountYearSign(1); | |||||
| } | |||||
| wxCUserBasicSignMapper.insert(record); | |||||
| } | |||||
| signInCreditHistory(record,EnumScoreType.SIGN_IN_DAY); | |||||
| return record; | |||||
| }else{ | |||||
| //补签 | |||||
| return null; | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public WxCUserBasicSign getTodaySignIn(WxCUserBasicSign record) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setTime(new Date()); | |||||
| calendar.set(Calendar.HOUR_OF_DAY, 0); | |||||
| calendar.set(Calendar.MINUTE, 0); | |||||
| calendar.set(Calendar.SECOND, 0); | |||||
| Date today = calendar.getTime();//今天零点 | |||||
| calendar.set(DAY_OF_MONTH,calendar.get(DAY_OF_MONTH) +1); | |||||
| Date tomorrow =calendar.getTime();//明天零点 | |||||
| record.setStartDate(today); | |||||
| record.setEndDate(tomorrow); | |||||
| List<WxCUserBasicSign> list = wxCUserBasicSignMapper.findList(record); | |||||
| if(list != null && list.size() == 1){ | |||||
| return list.get(0); | |||||
| }else if(list.size() > 1){ | |||||
| DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| String todayString = format.format(today); | |||||
| logger.error("用户签到数据异常{}"+record.getUserId()+"时间{}"+todayString); | |||||
| return list.get(0); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| @Override | |||||
| public Map<String,Integer> getLastSignIn(WxCUserBasicSign record) { | |||||
| Map<String,Integer> map = new HashMap<>(); | |||||
| WxCUserBasicSign lastSignIn = wxCUserBasicSignMapper.getLastSignIn(record); | |||||
| if(lastSignIn != null && DateUtils.isSameMonth(lastSignIn.getSigninDate(),new Date())){ | |||||
| //本月连续签到天数 | |||||
| map.put("continueMonthSign",lastSignIn.getContinueMonthSign()); | |||||
| }else{ | |||||
| map.put("continueMonthSign",0); | |||||
| } | |||||
| WxCreditHistory wxCreditHistory = new WxCreditHistory(); | |||||
| wxCreditHistory.setTenantId(record.getFinalTenantId()); | |||||
| wxCreditHistory.setCUserId(record.getUserId()); | |||||
| wxCreditHistory.setCreditType(EnumScoreType.SIGN_IN_DAY.getCode()); | |||||
| //每日签到 | |||||
| if(wxCreditHistoryMapper.loginCount(wxCreditHistory) > 0){ | |||||
| map.put("signInDay",1); | |||||
| }else{ | |||||
| map.put("signInDay",0); | |||||
| } | |||||
| //7日连续 | |||||
| wxCreditHistory.setCreditType(EnumScoreType.SIGN_IN_SEVENDAY.getCode()); | |||||
| if(wxCreditHistoryMapper.monthCount(wxCreditHistory) > 0 ){ | |||||
| map.put("signInSevenDay",1); | |||||
| }else{ | |||||
| map.put("signInSevenDay",0); | |||||
| } | |||||
| //14日连续 | |||||
| wxCreditHistory.setCreditType(EnumScoreType.SIGN_IN_FTDAY.getCode()); | |||||
| if(wxCreditHistoryMapper.monthCount(wxCreditHistory) > 0 ){ | |||||
| map.put("signInFTDay",1); | |||||
| }else{ | |||||
| map.put("signInFTDay",0); | |||||
| } | |||||
| //28日连续 | |||||
| wxCreditHistory.setCreditType(EnumScoreType.SIGN_IN_TEDAY.getCode()); | |||||
| if(wxCreditHistoryMapper.monthCount(wxCreditHistory) > 0 ){ | |||||
| map.put("signInTEDay",1); | |||||
| }else{ | |||||
| map.put("signInTEDay",0); | |||||
| } | |||||
| return map; | |||||
| } | |||||
| @Override | |||||
| public void signInCreditHistory(WxCUserBasicSign record, EnumScoreType enumScoreType){ | |||||
| WxCreditHistory wxCreditHistory = new WxCreditHistory(); | |||||
| wxCreditHistory.setCUserId(record.getUserId()); | |||||
| wxCreditHistory.setTenantId(record.getFinalTenantId()); | |||||
| wxCreditHistory.setCreateDate(new Date()); | |||||
| wxCreditHistory.setCreditType(enumScoreType.getCode()); | |||||
| wxCreditHistory.setChangePurpose(enumScoreType.getMessage()); | |||||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | |||||
| wxCreditHistory.setOperatorId(record.getUserId()); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,null); | |||||
| } | |||||
| } | |||||
| @@ -273,14 +273,14 @@ public class WxCUserServiceImpl implements WxCUserService { | |||||
| logger.error("c_user 成长值 " + e.getMessage()); | logger.error("c_user 成长值 " + e.getMessage()); | ||||
| } | } | ||||
| // 积分 | // 积分 | ||||
| try { | |||||
| credit = addCredit(user, EnumScoreType.LOGIN); | |||||
| logger.info("user_id:" + user.getId() + " 登录新增积分:" + credit); | |||||
| } catch (MallinkException e) { | |||||
| logger.error("c_user 积分 " + e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| logger.error("c_user 积分 " + e.getMessage()); | |||||
| } | |||||
| // try { | |||||
| // credit = addCredit(user, EnumScoreType.LOGIN); | |||||
| // logger.info("user_id:" + user.getId() + " 登录新增积分:" + credit); | |||||
| // } catch (MallinkException e) { | |||||
| // logger.error("c_user 积分 " + e.getMessage()); | |||||
| // } catch (Exception e) { | |||||
| // logger.error("c_user 积分 " + e.getMessage()); | |||||
| // } | |||||
| // 用户登陆后 更新最后一次活跃时间 | // 用户登陆后 更新最后一次活跃时间 | ||||
| if (user.getUserId() != null) { | if (user.getUserId() != null) { | ||||
| @@ -391,7 +391,8 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| private int creditIncrement(WxCreditHistory record) { | private int creditIncrement(WxCreditHistory record) { | ||||
| //查找C端用户的成长值 | //查找C端用户的成长值 | ||||
| if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) { | if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) { | ||||
| return loginAddCredit(record); | |||||
| // return loginAddCredit(record);//登陆加积分取消 | |||||
| return 0; | |||||
| } | } | ||||
| if (record.getCreditType() == EnumScoreType.BIND_CAR.getCode()) { | if (record.getCreditType() == EnumScoreType.BIND_CAR.getCode()) { | ||||
| return bindCarAddCredit(record); | return bindCarAddCredit(record); | ||||
| @@ -430,6 +431,19 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| return record.getCreditNum(); | return record.getCreditNum(); | ||||
| } | } | ||||
| if (record.getCreditType() == EnumScoreType.SIGN_IN_DAY.getCode()) { | |||||
| return signinCredit(record); | |||||
| } | |||||
| if (record.getCreditType() == EnumScoreType.SIGN_IN_SEVENDAY.getCode()) { | |||||
| return signinMonthCredit(record,EnumScoreType.SIGN_IN_SEVENDAY); | |||||
| } | |||||
| if (record.getCreditType() == EnumScoreType.SIGN_IN_FTDAY.getCode()) { | |||||
| return signinMonthCredit(record,EnumScoreType.SIGN_IN_FTDAY); | |||||
| } | |||||
| if (record.getCreditType() == EnumScoreType.SIGN_IN_TEDAY.getCode()) { | |||||
| return signinMonthCredit(record,EnumScoreType.SIGN_IN_TEDAY); | |||||
| } | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -449,6 +463,28 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| return wxScoreRules.getRule(EnumScoreType.LOGIN, WxScoreRules.SCORE); | return wxScoreRules.getRule(EnumScoreType.LOGIN, WxScoreRules.SCORE); | ||||
| } | } | ||||
| private int signinCredit(WxCreditHistory record) { | |||||
| //如果当天已经登录过则跳过 | |||||
| if (wxCreditHistoryMapper.loginCount(record) > 0) { | |||||
| return 0; | |||||
| } | |||||
| // 1. 获取当前租户下积分的增加规则 | |||||
| WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId()); | |||||
| // 2. 增长的积分 | |||||
| return wxScoreRules.getRule(EnumScoreType.SIGN_IN_DAY, WxScoreRules.SCORE); | |||||
| } | |||||
| private int signinMonthCredit(WxCreditHistory record,EnumScoreType enumScoreType) { | |||||
| // | |||||
| if (wxCreditHistoryMapper.monthCount(record) > 0) { | |||||
| return 0; | |||||
| } | |||||
| // 1. 获取当前租户下积分的增加规则 | |||||
| WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId()); | |||||
| // 2. 增长的积分 | |||||
| return wxScoreRules.getRule(enumScoreType, WxScoreRules.SCORE); | |||||
| } | |||||
| private int bindCarAddCredit(WxCreditHistory record) { | private int bindCarAddCredit(WxCreditHistory record) { | ||||
| if (wxCreditHistoryMapper.countList(record) > 0) { | if (wxCreditHistoryMapper.countList(record) > 0) { | ||||
| return 0; | return 0; | ||||
| @@ -52,50 +52,18 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { | |||||
| public void wxScoreRulesInit(String tenantId) { | public void wxScoreRulesInit(String tenantId) { | ||||
| WxScoreRules wxScoreRules = new WxScoreRules(); | WxScoreRules wxScoreRules = new WxScoreRules(); | ||||
| wxScoreRules.setTenantId(tenantId); | wxScoreRules.setTenantId(tenantId); | ||||
| wxScoreRules.setRules("[{\"id\": 1, \"desc\": \"每日登陆\", \"step\": 1, \"limit\": 0, \"score\": 0}," + | |||||
| " {\"id\": 2, \"score\": null, \"childs\": " + | |||||
| "[{\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"餐饮\", \"businessId\": 1}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"娱乐\", \"businessId\": 2}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服饰\", \"businessId\": 3}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"亲子\", \"businessId\": 4}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"超市\", \"businessId\": 5}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"美妆\", \"businessId\": 7}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"珠宝\", \"businessId\": 8}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服务\", \"businessId\": 9}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"家居\", \"businessId\": 10}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"数码家电\", \"businessId\": 11}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"其他\", \"businessId\": 6}]}," + | |||||
| " {\"id\": 3, \"desc\": \"绑定车牌1个\", \"step\": 1, \"limit\": 1, \"score\": 0}," + | |||||
| " {\"id\": 6, \"desc\": \"授权手机号\", \"step\": 1, \"limit\": 1, \"score\": 0}," + | |||||
| " {\"id\": 7, \"desc\": \"编辑个人信息\", \"step\": 1, \"limit\": 1, \"score\": 0}]"); | |||||
| wxScoreRules.setRules(WxScoreRules.getCreditDefaultRules()); | |||||
| wxScoreRules.setCreateDate(new Date()); | wxScoreRules.setCreateDate(new Date()); | ||||
| wxScoreRules.setUpdateDate(new Date()); | wxScoreRules.setUpdateDate(new Date()); | ||||
| wxScoreRules.setType(2); | |||||
| wxScoreRules.setClearYear(1); | |||||
| wxScoreRules.setScale(10); | |||||
| wxScoreRules.setType(EnumScoreRules.CREDIT.getCode()); | |||||
| wxScoreRules.setCreditLocked(1); | wxScoreRules.setCreditLocked(1); | ||||
| wxScoreRulesMapper.insert(wxScoreRules); | wxScoreRulesMapper.insert(wxScoreRules); | ||||
| wxScoreRules = new WxScoreRules(); | wxScoreRules = new WxScoreRules(); | ||||
| wxScoreRules.setTenantId(tenantId); | wxScoreRules.setTenantId(tenantId); | ||||
| wxScoreRules.setRules("[{\"id\": 1, \"desc\": \"每日登陆\", \"step\": 1, \"limit\": 0, \"score\": 0}," + | |||||
| " {\"id\": 2, \"score\": 0, \"childs\": " + | |||||
| "[{\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"餐饮\", \"businessId\": 1}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"娱乐\", \"businessId\": 2}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服饰\", \"businessId\": 3}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"亲子\", \"businessId\": 4}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"超市\", \"businessId\": 5}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"美妆\", \"businessId\": 7}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"珠宝\", \"businessId\": 8}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服务\", \"businessId\": 9}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"家居\", \"businessId\": 10}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"数码家电\", \"businessId\": 11}," + | |||||
| " {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"其他\", \"businessId\": 6}]}," + | |||||
| " {\"id\": 3, \"desc\": \"绑定车牌1个\", \"step\": 1, \"limit\": 1, \"score\": 0}," + | |||||
| " {\"id\": 6, \"desc\": \"授权手机号\", \"step\": 1, \"limit\": 1, \"score\": 0}," + | |||||
| " {\"id\": 7, \"desc\": \"编辑个人信息\", \"step\": 1, \"limit\": 1, \"score\": 0}]"); | |||||
| wxScoreRules.setRules(WxScoreRules.getScoreDefaultRules()); | |||||
| wxScoreRules.setCreateDate(new Date()); | wxScoreRules.setCreateDate(new Date()); | ||||
| wxScoreRules.setUpdateDate(new Date()); | wxScoreRules.setUpdateDate(new Date()); | ||||
| wxScoreRules.setType(1); | |||||
| wxScoreRules.setType(EnumScoreRules.SCORE.getCode()); | |||||
| wxScoreRules.setCreditLocked(0); | wxScoreRules.setCreditLocked(0); | ||||
| wxScoreRulesMapper.insert(wxScoreRules); | wxScoreRulesMapper.insert(wxScoreRules); | ||||
| } | } | ||||
| @@ -145,9 +113,18 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { | |||||
| //当成长值或积分规则新增时,将新增的数据一并返回给接口调用端 | //当成长值或积分规则新增时,将新增的数据一并返回给接口调用端 | ||||
| private String getScoreRulesNew(String scoreRules,EnumScoreRules enumScoreRules){ | private String getScoreRulesNew(String scoreRules,EnumScoreRules enumScoreRules){ | ||||
| //getJSONObject(1) 为EnumScoreType.CONSUMPTION(2, "消费")的下标值 | //getJSONObject(1) 为EnumScoreType.CONSUMPTION(2, "消费")的下标值 | ||||
| JSONArray jsonArrayOld = JSONArray.parseArray(scoreRules).getJSONObject(1).getJSONArray("childs"); | |||||
| String defaultRules = enumScoreRules.equals(EnumScoreRules.SCORE) ? WxScoreRules.getScoreDefaultRules() : WxScoreRules.getCreditDefaultRules(); | |||||
| JSONArray jsonArrayDefault = JSONArray.parseArray(defaultRules).getJSONObject(1).getJSONArray("childs"); | |||||
| JSONArray jsonArrayOld = new JSONArray(); | |||||
| JSONArray jsonArrayDefault = new JSONArray(); | |||||
| if(enumScoreRules.equals(EnumScoreRules.SCORE)){ | |||||
| jsonArrayOld = JSONArray.parseArray(scoreRules).getJSONObject(1).getJSONArray("childs"); | |||||
| String defaultRules = WxScoreRules.getScoreDefaultRules(); | |||||
| jsonArrayDefault = JSONArray.parseArray(defaultRules).getJSONObject(1).getJSONArray("childs"); | |||||
| }else if(enumScoreRules.equals(EnumScoreRules.CREDIT)){ | |||||
| jsonArrayOld = JSONArray.parseArray(scoreRules).getJSONObject(0).getJSONArray("childs"); | |||||
| String defaultRules = WxScoreRules.getCreditDefaultRules(); | |||||
| jsonArrayDefault = JSONArray.parseArray(defaultRules).getJSONObject(0).getJSONArray("childs"); | |||||
| } | |||||
| if (jsonArrayOld.size() < jsonArrayDefault.size()) { | if (jsonArrayOld.size() < jsonArrayDefault.size()) { | ||||
| JSONArray childsJsonArray = new JSONArray(); | JSONArray childsJsonArray = new JSONArray(); | ||||
| JSONObject otherJSONObject = new JSONObject(); | JSONObject otherJSONObject = new JSONObject(); | ||||
| @@ -104,8 +104,10 @@ public class CreditUtil { | |||||
| if(Objects.nonNull(wxCUserBasicInfo.getScoreDate())){ | if(Objects.nonNull(wxCUserBasicInfo.getScoreDate())){ | ||||
| int scoreYear = DateUtils.getYear(wxCUserBasicInfo.getScoreDate()); | int scoreYear = DateUtils.getYear(wxCUserBasicInfo.getScoreDate()); | ||||
| int year = DateUtils.getYear(new Date()); | int year = DateUtils.getYear(new Date()); | ||||
| if(scoreYear == year && DateUtils.isBirthdays(wxCUserBasicInfo.getScoreDate())){ | |||||
| birthdayScale = getBirthdayScoreScale(tenantId, wxScoreRulesService); | |||||
| if(scoreYear == year){ | |||||
| if(DateUtils.isBirthdays(wxCUserBasicInfo.getScoreDate())){ | |||||
| birthdayScale = getBirthdayScoreScale(tenantId, wxScoreRulesService); | |||||
| } | |||||
| }else{ | }else{ | ||||
| if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.isBirthdays(wxCUserBasicInfo.getBirthdate())) { | if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.isBirthdays(wxCUserBasicInfo.getBirthdate())) { | ||||
| birthdayScale = getBirthdayScoreScale(tenantId,wxScoreRulesService); | birthdayScale = getBirthdayScoreScale(tenantId,wxScoreRulesService); | ||||
| @@ -1362,4 +1362,19 @@ public class DateUtils { | |||||
| return false; | return false; | ||||
| } | } | ||||
| /** | |||||
| * 获取当前日期零点<br> | |||||
| * | |||||
| * @param date | |||||
| * @return 获取当前日期零点 | |||||
| */ | |||||
| public static Date getDateZero(Date date) { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| cal.set(Calendar.HOUR_OF_DAY, 0); | |||||
| cal.set(Calendar.MINUTE, 0); | |||||
| cal.set(Calendar.SECOND, 0); | |||||
| return cal.getTime(); | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,91 @@ | |||||
| <?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"> | |||||
| <mapper namespace="com.iformall.mapper.WxCUserBasicSignMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCUserBasicSign"> | |||||
| <id column="id" jdbcType="BIGINT" property="id" /> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" /> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/> | |||||
| <result column="user_id" jdbcType="BIGINT" property="userId" /> | |||||
| <result column="type" jdbcType="INTEGER" property="type" /> | |||||
| <result column="signin_date" jdbcType="TIMESTAMP" property="signinDate"/> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||||
| <result column="continue_month_sign" jdbcType="INTEGER" property="continueMonthSign" /> | |||||
| <result column="count_month_sign" jdbcType="INTEGER" property="countMonthSign" /> | |||||
| <result column="continue_year_sign" jdbcType="INTEGER" property="continueYearSign" /> | |||||
| <result column="count_year_sign" jdbcType="INTEGER" property="countYearSign" /> | |||||
| <result column="continue_sign" jdbcType="INTEGER" property="continueSign" /> | |||||
| <result column="count_sign" jdbcType="INTEGER" property="countSign" /> | |||||
| <result column="mark" jdbcType="VARCHAR" property="mark" /> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| `id`,`tenant_id`,`parent_tenant_id`,`user_id`,`type`,`signin_date`,`create_date`,`update_date`, | |||||
| `continue_month_sign`,`count_month_sign`,`continue_year_sign`,`count_year_sign`, | |||||
| `continue_sign`,`count_sign`,`mark` | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != userId "> | |||||
| and `user_id` = #{userId} | |||||
| </if> | |||||
| <if test=" null != type "> | |||||
| and `type` = #{type} | |||||
| </if> | |||||
| <if test=" null != startDate "> | |||||
| and `signin_date` >= #{startDate} | |||||
| </if> | |||||
| <if test=" null != endDate"> | |||||
| and `signin_date` < #{endDate} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| order by `signin_date` desc | |||||
| </sql> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxCUserBasicSign" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> | |||||
| from wx_c_user_basic_sign | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| <select id="getLastSignIn" parameterType="com.iformall.domain.po.WxCUserBasicSign" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" />,max(`signin_date`) from wx_c_user_basic_sign | |||||
| where 1 = 1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != userId "> | |||||
| and `user_id` = #{userId} | |||||
| </if> | |||||
| group by user_id | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -184,6 +184,18 @@ | |||||
| and DATEDIFF(`create_date`,now())=0 | and DATEDIFF(`create_date`,now())=0 | ||||
| </select> | </select> | ||||
| <select id="monthCount" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer"> | |||||
| select COUNT(0) from wx_credit_history | |||||
| where 1=1 | |||||
| <if test=" null != cUserId "> | |||||
| and `c_user_id` = #{cUserId} | |||||
| </if> | |||||
| <if test=" null != creditType "> | |||||
| and `credit_type` = #{creditType} | |||||
| </if> | |||||
| and DATE_FORMAT(`create_date`,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m'); | |||||
| </select> | |||||
| <select id="countTodayList" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer"> | <select id="countTodayList" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer"> | ||||
| select count(0) | select count(0) | ||||
| from wx_credit_history | from wx_credit_history | ||||