From 02b2aafbe6adda267240f9f17c0f247b0f3236c0 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 17 Sep 2019 01:43:30 +0800 Subject: [PATCH 01/16] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration/V201909170131__MENU_CHANGED.sql | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170131__MENU_CHANGED.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170131__MENU_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170131__MENU_CHANGED.sql new file mode 100644 index 000000000..0e10a7388 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170131__MENU_CHANGED.sql @@ -0,0 +1,24 @@ +DROP TABLE IF EXISTS `mall_sale_type` ; +CREATE TABLE `mall_sale_type` ( + `id` bigint(64) NOT NULL, + `name` varchar(32) DEFAULT NULL COMMENT '销售类型', + `type` tinyint(2) DEFAULT NULL COMMENT '资源类型1:尊享全能版 2:尊享营销版 3.速享版', + `period` tinyint(2) DEFAULT NULL COMMENT '有效期(单位月)', + `menus` json DEFAULT NULL COMMENT '菜单列表', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` ROW_FORMAT=DYNAMIC COMMENT='系统销售表' CHECKSUM=0 DELAY_KEY_WRITE=0; + +INSERT INTO `mall_sale_type` + (`id`,`name`, `type`, `period`, `menus`) +VALUES + (1, '尊享全能版', 1, 12, + '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]' + ), + (2, '尊享营销版', 2, 12, + '[1,2,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,201,202,203,204,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,961]' + ), + (3, '速享版', 3, 1, + '[2,4,5,6,7,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]' + ) + ; From 693408b9463ede2eaa8bdeb7321ab9aa7869223b Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 10:26:40 +0800 Subject: [PATCH 02/16] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCreditHistoryServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index c121ab847..5c3ead4fd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -234,12 +234,14 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { boolean hasBirthDateCredit = false; if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { //等级积分配置 - Integer levelScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); try { + Integer levelScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, levelScale, wxCUserBasicInfo, wxScoreRulesService); if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) { hasBirthDateCredit = true; } + } catch (Exception e) { + logger.error("积分倍率计算异常",e); } finally { CreditUtil.clear(); } From ad3d9fbda62da6db1286a0456f8aacdda0ca9281 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 17 Sep 2019 11:11:21 +0800 Subject: [PATCH 03/16] =?UTF-8?q?[=E8=B4=A6=E5=8D=95=E6=80=BB=E8=A7=88][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=AF=BC=E5=87=BA=E6=97=B6=E8=BF=87?= =?UTF-8?q?=E6=BB=A4merchantId=E4=B8=BA=E7=A9=BA=E6=95=B0=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/service/impl/WxBillAllServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index 704f06dce..10c0fd20f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -311,7 +311,8 @@ public class WxBillAllServiceImpl implements WxBillAllService { @Override public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillAll wxBillAll) { - Map> collect = wxBillAllMapper.list(wxBillAll).parallelStream() + Map> collect = wxBillAllMapper.list(wxBillAll) + .stream().filter(b -> null != b.getMerchantId()) .collect(Collectors.groupingBy(WxBillAllVo::getMerchantId)); Set>> entries = collect.entrySet(); List datalist = new ArrayList<>(); From 8f86884580c4fe766f1162bffe58d9c545a81499 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 14:18:26 +0800 Subject: [PATCH 04/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mem/WxCreditHistoryController.java | 1 + .../iformall/controller/WxCUserController.java | 1 + .../controller/WxCreditHistoryController.java | 13 +++++++++++-- .../controller/WxCreditHistoryController.java | 15 --------------- .../iformall/service/WxCreditHistoryService.java | 7 ++++--- .../service/impl/WxCreditHistoryServiceImpl.java | 10 +++++----- 6 files changed, 22 insertions(+), 25 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java index 2dd8d0bea..102c8cf90 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java @@ -78,6 +78,7 @@ public class WxCreditHistoryController extends BaseController { wxCreditHistory.setTenantId(user.getTenantId()); wxCreditHistory.setOperatorId(user.getId()); try { + wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId()) ; WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); return new ResultData(Result.SUCCESS, "操作成功", credit); } catch (MallinkException e) { diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java index 4453fdd5c..28d2415da 100755 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java @@ -92,6 +92,7 @@ public class WxCUserController extends BaseController { wxCUser.setOpenId(wxCUserFromBDto.getOpenid()); wxCUser = wxCUserService.getByOpenId(wxCUser); if (wxCUserFromB == null) { + //TODO phone可能为空 String phone = wxCUser.getPhone(); String tenantId = wxCUser.getTenantId(); //查询会员信息 diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java index 65a31ed19..d8bebe92d 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java @@ -15,6 +15,7 @@ import com.iformall.exception.MallinkException; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCreditHistoryService; import com.iformall.service.WxMerchantService; +import com.iformall.utils.UserUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -25,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; import java.util.Objects; @RestController @@ -61,7 +63,14 @@ public class WxCreditHistoryController extends BaseController { if(Objects.isNull(merchantId)|| StringUtils.isEmpty(spendStr)||Objects.isNull(userId)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL) ; } - return new ResultData(wxCreditHistoryService.findByMerchantIdAndSpend(merchantId,spendStr,userId,getTenantId())); + try { + Map result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId, getTenantId()); + return new ResultData(result); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, e.getMessage()); + } } @ApiOperation("根据手机号查询接口") @@ -104,7 +113,7 @@ public class WxCreditHistoryController extends BaseController { //B端操作用户 wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); try { - wxCreditHistoryService.check(wxCreditHistory.getCUserId()); + wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId()); WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); return new ResultData(Result.SUCCESS, "操作成功", credit); } catch (MallinkException e) { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java index 2a2b2fdb4..89f3a1db6 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java @@ -25,21 +25,6 @@ public class WxCreditHistoryController extends BaseController{ @Autowired private WxCreditHistoryService wxCreditHistoryService; - @ApiOperation("新增接口") - @PostMapping("/add") - public ResultData add(@RequestBody WxCreditHistory wxCreditHistory) { - log.debug("[" + getIpAddr() + "] WxCreditHistoryController::add"); - wxCreditHistory.setTenantId(getTenantId()); - wxCreditHistory.setOperatorId(getUser().getId()); - try { - WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); - return new ResultData(Result.SUCCESS, "操作成功", credit); - } catch (MallinkException e) { - log.error(e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } - } - @ApiOperation("用户积分列表") @GetMapping("list") @ApiImplicitParams({ diff --git a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java index f44542b87..7b4a32093 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java @@ -40,11 +40,12 @@ public interface WxCreditHistoryService { WxCreditHistory getById(Long id); /** - * 校验用户是否存在 + * 添加积分时,需要校验用户以及手机号是否存在 + * 规则:有手机号增加积分,无手机号提示授权手机号 * @param cUserId */ - void check(Long cUserId) ; - + void creditUsercheck(Long cUserId); + /** * 保存或更新实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 5c3ead4fd..78873ac5a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -19,6 +19,7 @@ import com.iformall.service.WxCreditHistoryService; import com.iformall.service.WxScoreRulesService; import com.iformall.utils.CreditUtil; import com.iformall.utils.RedisLock; +import com.iformall.utils.UserUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -195,11 +196,10 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { } @Override - public void check(Long cUserId) { + public void creditUsercheck(Long cUserId) { + WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(cUserId); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(cUserId); - if (wxCUserBasicInfo == null) { - throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); - } + UserUtil.creditUsercheck(wxCUser, wxCUserBasicInfo); } @Override @@ -352,7 +352,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (Objects.nonNull(userId)) { WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(userId); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(userId); - Integer birthdayScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); + Integer birthdayScale = (wxCUser == null ? null : wxLevelConfigMapper.getScale(tenantId, wxCUser.getScore())); creditNew = CreditUtil.calUserCredit(credit, wxCUser, birthdayScale, wxCUserBasicInfo, wxScoreRulesService); } else { creditNew = credit; From 39dbb3c60c9e3eccd5cc7bab75e68414271c5831 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 14:22:00 +0800 Subject: [PATCH 05/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/utils/UserUtil.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/utils/UserUtil.java diff --git a/mallinkService/src/main/java/com/iformall/utils/UserUtil.java b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java new file mode 100644 index 000000000..82381dc58 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java @@ -0,0 +1,37 @@ +package com.iformall.utils; + +import com.iformall.common.ErrorCode; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.exception.MallinkException; +import org.apache.commons.lang3.StringUtils; + +import java.util.Objects; + +/** + * 用户校验工具类 + */ +public class UserUtil { + + + /** + * 增加积分:校验用户信息 + * 规则:有手机号增加积分,无手机号提示授权手机号 + * @param wxCUser + * @param wxCUserBasicInfo + */ + public static void creditUsercheck(WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo) { + if (Objects.isNull(wxCUser) && Objects.isNull(wxCUserBasicInfo)) { + throw new MallinkException(ErrorCode.USER_NOT_MEMBER); + } + + if (Objects.isNull(wxCUserBasicInfo)|| StringUtils.isBlank(wxCUserBasicInfo.getPhone())) { + throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); + } + + if (Objects.isNull(wxCUser)|| StringUtils.isBlank(wxCUser.getPhone())) { + throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); + } + + } +} From 8a12f5a75c565ad73cacc11e3a824c742a805a15 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 14:55:57 +0800 Subject: [PATCH 06/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/utils/UserUtil.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/utils/UserUtil.java b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java index 82381dc58..e7129ea46 100644 --- a/mallinkService/src/main/java/com/iformall/utils/UserUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java @@ -22,16 +22,17 @@ public class UserUtil { */ public static void creditUsercheck(WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo) { if (Objects.isNull(wxCUser) && Objects.isNull(wxCUserBasicInfo)) { - throw new MallinkException(ErrorCode.USER_NOT_MEMBER); + throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); } if (Objects.isNull(wxCUserBasicInfo)|| StringUtils.isBlank(wxCUserBasicInfo.getPhone())) { throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); } - if (Objects.isNull(wxCUser)|| StringUtils.isBlank(wxCUser.getPhone())) { - throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); - } + // 根据当前业务,wxCUserBasicInfo存在手机号,wxCUser肯定存在,除非人为删除手机号 + //if (Objects.isNull(wxCUser)|| StringUtils.isBlank(wxCUser.getPhone())) { + // throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); + //} } } From 015ba1f65b5a650d0161c6cad7f2b7ad13a170e6 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 14:56:49 +0800 Subject: [PATCH 07/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCreditHistoryServiceImpl.java | 2 +- mallinkService/src/main/java/com/iformall/utils/UserUtil.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 78873ac5a..e91ffa2a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -199,7 +199,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { public void creditUsercheck(Long cUserId) { WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(cUserId); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(cUserId); - UserUtil.creditUsercheck(wxCUser, wxCUserBasicInfo); + UserUtil.creditUserCheck(wxCUser, wxCUserBasicInfo); } @Override diff --git a/mallinkService/src/main/java/com/iformall/utils/UserUtil.java b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java index e7129ea46..170fbf7fe 100644 --- a/mallinkService/src/main/java/com/iformall/utils/UserUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/UserUtil.java @@ -20,7 +20,7 @@ public class UserUtil { * @param wxCUser * @param wxCUserBasicInfo */ - public static void creditUsercheck(WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo) { + public static void creditUserCheck(WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo) { if (Objects.isNull(wxCUser) && Objects.isNull(wxCUserBasicInfo)) { throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE); } From 1b3e95fe0bc16817cd48c6f041d6f39d55163d29 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 15:27:40 +0800 Subject: [PATCH 08/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/utils/CreditUtil.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java index a8df0dddd..5ef4ef50d 100644 --- a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java @@ -3,6 +3,7 @@ package com.iformall.utils; import com.iformall.domain.po.*; import com.iformall.service.WxScoreRulesService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; import java.util.Objects; @@ -23,9 +24,6 @@ public class CreditUtil { * @return */ public static int calUserCredit(int creditOrigin, WxCUser wxCUser, Integer levelScaleConfig, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) { - if (Objects.isNull(wxCUser) || Objects.isNull(wxCUserBasicInfo)) { - return 0; - } // 获取等级积分倍率, int levelScale = getLevelScale(wxCUser, levelScaleConfig); @@ -51,6 +49,9 @@ public class CreditUtil { */ private static int getLevelScale(WxCUser wxCUser, Integer levelScaleConfig) { int levelScale = WxLevelConfig.DEFAULT_SCALE; + if (Objects.isNull(wxCUser)) { + return levelScale; + } Integer score = wxCUser.getScore(); //积分不为空时进行计算 if (Objects.nonNull(score)) { @@ -74,6 +75,9 @@ public class CreditUtil { */ private static int getBirthdayScale(WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) { int birthdayScale = WxScoreRules.DEFAULT_SCALE; + if (Objects.isNull(wxCUserBasicInfo) || StringUtils.isBlank(wxCUserBasicInfo.getPhone())) { + return 0; + } //判断是否生日当天,一年一天有效 //没有发过生日券的用户或者没有享受过生日积分倍率的用户 if(Objects.isNull(wxCUserBasicInfo.getScoreDate())) { From f1fd0804a815b714a4ae3f51f98e466c02fc7164 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 16:09:12 +0800 Subject: [PATCH 09/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/iformall/utils/CreditUtil.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java index 5ef4ef50d..48ffd24b1 100644 --- a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java @@ -36,7 +36,20 @@ public class CreditUtil { .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) , BigDecimal.ROUND_HALF_UP).intValue(); - log.info("积分倍率计算, 用户:{},成长值:{},等级积分倍率:{},生日积分倍率:{},原积分:{},新积分:{}", wxCUser.getId(), wxCUser.getScore(), levelScale, birthdayScale, creditOrigin, creditNew); + Long userId = null; + Integer score = null; + if (Objects.nonNull(wxCUser)) { + userId = wxCUser.getId(); + score = wxCUser.getScore(); + } + if (Objects.isNull(userId)) { + userId = wxCUserBasicInfo.getId(); + } + + if (Objects.isNull(score)) { + score = wxCUserBasicInfo.getPoins(); + } + log.info("积分倍率计算, 用户:{},成长值:{},等级积分倍率:{},生日积分倍率:{},原积分:{},新积分:{}", userId, score, levelScale, birthdayScale, creditOrigin, creditNew); return creditNew; } From 25c88d4c8739767a4e70e806874c47d1c058cefa Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 17:21:24 +0800 Subject: [PATCH 10/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxCreditHistoryServiceImpl.java | 6 +-- .../java/com/iformall/utils/CreditUtil.java | 49 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index e91ffa2a0..018be9848 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -235,8 +235,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { //等级积分配置 try { - Integer levelScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); - creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, levelScale, wxCUserBasicInfo, wxScoreRulesService); + creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) { hasBirthDateCredit = true; } @@ -352,8 +351,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (Objects.nonNull(userId)) { WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(userId); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(userId); - Integer birthdayScale = (wxCUser == null ? null : wxLevelConfigMapper.getScale(tenantId, wxCUser.getScore())); - creditNew = CreditUtil.calUserCredit(credit, wxCUser, birthdayScale, wxCUserBasicInfo, wxScoreRulesService); + creditNew = CreditUtil.calUserCredit(credit, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); } else { creditNew = credit; } diff --git a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java index 48ffd24b1..d4cb138ae 100644 --- a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java @@ -1,6 +1,7 @@ package com.iformall.utils; import com.iformall.domain.po.*; +import com.iformall.mapper.WxLevelConfigMapper; import com.iformall.service.WxScoreRulesService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -18,29 +19,20 @@ public class CreditUtil { * * @param creditOrigin 原始积分 * @param wxCUser C端用户信息 - * @param levelScaleConfig 等级倍率配置 * @param wxCUserBasicInfo C端用户信息 * @param wxScoreRulesService + * @param wxLevelConfigMapper * @return */ - public static int calUserCredit(int creditOrigin, WxCUser wxCUser, Integer levelScaleConfig, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) { - // 获取等级积分倍率, - int levelScale = getLevelScale(wxCUser, levelScaleConfig); - - // 获取生日积分倍率: - int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); - - int creditNew = new BigDecimal(creditOrigin) - .multiply(new BigDecimal(levelScale)) - .multiply(new BigDecimal(birthdayScale)) - .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) - .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) - , BigDecimal.ROUND_HALF_UP).intValue(); + public static int calUserCredit(int creditOrigin, WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService, WxLevelConfigMapper wxLevelConfigMapper) { Long userId = null; Integer score = null; + String tenantId = null; + Integer levelScaleConfig = WxLevelConfig.DEFAULT_SCALE ; if (Objects.nonNull(wxCUser)) { userId = wxCUser.getId(); score = wxCUser.getScore(); + tenantId = wxCUser.getTenantId(); } if (Objects.isNull(userId)) { userId = wxCUserBasicInfo.getId(); @@ -49,6 +41,27 @@ public class CreditUtil { if (Objects.isNull(score)) { score = wxCUserBasicInfo.getPoins(); } + + if (StringUtils.isBlank(tenantId)) { + tenantId = wxCUserBasicInfo.getTenantId(); + } + + if(Objects.nonNull(wxCUser)) { + levelScaleConfig = wxLevelConfigMapper.getScale(tenantId, score) ; + } + // 获取等级积分倍率, + int levelScale = getLevelScale(score, levelScaleConfig); + + // 获取生日积分倍率: + int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); + + int creditNew = new BigDecimal(creditOrigin) + .multiply(new BigDecimal(levelScale)) + .multiply(new BigDecimal(birthdayScale)) + .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) + .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) + , BigDecimal.ROUND_HALF_UP).intValue(); + log.info("积分倍率计算, 用户:{},成长值:{},等级积分倍率:{},生日积分倍率:{},原积分:{},新积分:{}", userId, score, levelScale, birthdayScale, creditOrigin, creditNew); return creditNew; } @@ -56,16 +69,12 @@ public class CreditUtil { /** * 根据会员信息获取等级积分倍率 * - * @param wxCUser * @param levelScaleConfig * @return */ - private static int getLevelScale(WxCUser wxCUser, Integer levelScaleConfig) { + private static int getLevelScale(Integer score, Integer levelScaleConfig) { int levelScale = WxLevelConfig.DEFAULT_SCALE; - if (Objects.isNull(wxCUser)) { - return levelScale; - } - Integer score = wxCUser.getScore(); + //积分不为空时进行计算 if (Objects.nonNull(score)) { //等级积分配置存在时进行计算 From cfb4e0af2e58df7800539ab90b5a60b9530d7fe2 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 17 Sep 2019 17:36:40 +0800 Subject: [PATCH 11/16] =?UTF-8?q?[=E7=A7=AF=E5=88=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E8=AE=A1=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/java/com/iformall/domain/po/WxShop.java | 2 +- .../main/java/com/iformall/service/impl/WxChartServiceImpl.java | 2 +- .../com/iformall/service/impl/WxCreditHistoryServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java index 7ab9e55b1..3a09ccaf3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java @@ -129,7 +129,7 @@ public class WxShop extends BaseEntity { private String rent; @io.swagger.annotations.ApiModelProperty(value = "预置业态", name = "businessId") - private Long businessId; + private Integer businessId; @io.swagger.annotations.ApiModelProperty(value = "租金单位", name = "rentUnit") private Integer rentUnit; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java index 7698bd322..536d81a96 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -2631,7 +2631,7 @@ public class WxChartServiceImpl implements WxChartDataService { query.setFloor(Long.valueOf(floor)); } if (StringUtils.isNotEmpty(business)) { - query.setBusinessId(Long.valueOf(business)); + query.setBusinessId(Integer.valueOf(business)); } query.setType(null); Long total = wxShopMapper.getCountByWxShop(query); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 018be9848..9a95815b3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -493,7 +493,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { for (int i = 0; i < busRules.size(); i++) { JSONObject bus = (JSONObject) busRules.get(i); Integer businessId1 = bus.getInteger("businessId"); - if (record.getBusinessId().equals(Long.valueOf(businessId1))) { + if (record.getBusinessId().equals(businessId1)) { busRule = bus; } if (businessId1.equals(EnumBusiness.BUSINESS_ID6.getCode())) { From fd875cb39f1f3c251bf2c7f7ea477d0ff73f5d40 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 18:56:26 +0800 Subject: [PATCH 12/16] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/utils/CreditUtil.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java index d4cb138ae..8f9df1df8 100644 --- a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java @@ -45,10 +45,7 @@ public class CreditUtil { if (StringUtils.isBlank(tenantId)) { tenantId = wxCUserBasicInfo.getTenantId(); } - - if(Objects.nonNull(wxCUser)) { - levelScaleConfig = wxLevelConfigMapper.getScale(tenantId, score) ; - } + levelScaleConfig = wxLevelConfigMapper.getScale(tenantId, score) ; // 获取等级积分倍率, int levelScale = getLevelScale(score, levelScaleConfig); From d5726805a95669f3b574b9ab6e720231ab1a3c92 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 20:04:43 +0800 Subject: [PATCH 13/16] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D][=E6=95=B0=E6=8D=AE]?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=AF=E5=88=86=E6=8E=A5=E5=8F=A3=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=95=B0=E6=8D=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WxCreditHistoryMapper.java | 5 +- .../mapper/WxCreditHistoryMapper.xml | 4 + .../controller/sys/DataInitController.java | 94 +++++++++++++++++-- 3 files changed, 93 insertions(+), 10 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index 88e4127e6..ab5146988 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.vo.WxCreditHistoryNewIdVo; import com.iformall.domain.vo.WxCreditHistoryVo; +import java.util.Date; import java.util.List; public interface WxCreditHistoryMapper extends CommonMapper { @@ -29,7 +30,5 @@ public interface WxCreditHistoryMapper extends CommonMapper findListAfter(Integer creditType, String dateTime); } diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index 723b3840a..acbddbc96 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -249,4 +249,8 @@ ) credit + + diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index 730d16e8d..fee8572de 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -3,13 +3,12 @@ package com.iformall.controller.sys; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxMall; -import com.iformall.domain.po.WxMsgSignature; -import com.iformall.domain.po.WxMsgValidationcodeModel; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.*; import com.iformall.enums.EnumMsgModel; -import com.iformall.mapper.WxMallMapper; -import com.iformall.mapper.WxMsgSignatureMapper; -import com.iformall.mapper.WxMsgValidationcodeModelMapper; +import com.iformall.mapper.*; +import com.iformall.service.WxCreditHistoryService; +import com.iformall.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; @@ -20,6 +19,7 @@ import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -28,7 +28,7 @@ import java.util.stream.Collectors; @Slf4j @RestController @RequestMapping("sys") -public class DataInitController { +public class DataInitController extends BaseController { @Resource @@ -37,10 +37,23 @@ public class DataInitController { private WxMsgSignatureMapper signatureMapper; @Resource private WxMsgValidationcodeModelMapper modelMapper; + @Resource + private WxCreditHistoryMapper creditHistoryMapper; + @Resource + private WxCreditHistoryService creditHistoryService; + + @Resource + private WxCUserMapper cUserMapper; + @Resource + private WxCUserBasicInfoMapper cUserBasicInfoMapper; @GetMapping("/init") public ResultData init() { try { + MallUserInfo userInfo = getUser(); + if (userInfo.isFmSuperAdmin()) { + return new ResultData(); + } addBirthDayMsgModel(); } catch (Exception e) { log.error("DataInitController::init error ", e); @@ -50,6 +63,73 @@ public class DataInitController { return new ResultData(); } + /** + * 积分数据修复 + * + * @return + */ + @GetMapping("/fixCredit") + public ResultData fixCredit() { + try { + MallUserInfo userInfo = getUser(); + if(userInfo.isFmSuperAdmin()) { + return new ResultData(); + } + doFixCredit(); + } catch (Exception e) { + log.error("DataInitController::fixCredit error ", e); + return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); + } + + return new ResultData(); + } + + @Transactional(rollbackFor = Exception.class) + public void doFixCredit() { + // 1 获取积分记录 + List creditList = creditHistoryMapper.findListAfter(10, "2019-09-16 22:00:00"); + // 2 重新计算积分,比较是否需要修复 + creditList.forEach(wxCreditHistory -> { + WxCUser cUser = cUserMapper.selectByPrimaryKey(wxCreditHistory.getCUserId()); + WxCUserBasicInfo userBasicInfo = cUserBasicInfoMapper.selectByPrimaryKey(wxCreditHistory.getCUserId()); + //排查不存在的用户 + if (Objects.isNull(cUser) && Objects.isNull(userBasicInfo)) { + log.debug("用户不存在 id: {}", wxCreditHistory.getId()); + return; + } + + Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(wxCreditHistory.getSpend()), wxCreditHistory.getCUserId(), wxCreditHistory.getTenantId()); + Integer creditDB = wxCreditHistory.getCreditNum(); + Integer credit = result.get("credit"); + if (Objects.equals(credit, creditDB)) { + log.debug("本次积分计算:正确, id: {},原积分: {},重新计算积分: {}, 积分时间: {}", wxCreditHistory.getId(), creditDB, credit, DateUtils.format(wxCreditHistory.getCreateDate())); + } else { + log.debug("本次积分计算:错误, id: {},原积分: {},重新计算积分: {}, 积分时间: {}", wxCreditHistory.getId(), creditDB, credit, DateUtils.format(wxCreditHistory.getCreateDate())); + // 3 重新计算积分 + //用户新积分 + Integer newCredit = wxCreditHistory.getCreditAmount() - creditDB + credit; + + // 4 更新积分 + WxCUser toUpdateCUser = new WxCUser(); + toUpdateCUser.setId(wxCreditHistory.getCUserId()); + toUpdateCUser.setCredit(newCredit); + toUpdateCUser.setUpdateDate(new Date()); + cUserMapper.updateByPrimaryKeySelective(toUpdateCUser); + + WxCUserBasicInfo toUpdateBasicInfo = new WxCUserBasicInfo(); + toUpdateBasicInfo.setId(wxCreditHistory.getCUserId()); + toUpdateBasicInfo.setCredit(newCredit); + toUpdateBasicInfo.setUpdateDate(new Date()); + cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdateBasicInfo); + + WxCreditHistory toUpdateCreditHistory = new WxCreditHistory(); + toUpdateCreditHistory.setId(wxCreditHistory.getId()); + toUpdateCreditHistory.setCreditNum(newCredit); + creditHistoryMapper.updateByPrimaryKeySelective(toUpdateCreditHistory); + } + }); + } + /** * 增加会员生日短信模板 */ From 28420b4a17a05a082ad10f4d06a77afc694790a8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 17 Sep 2019 20:04:13 +0800 Subject: [PATCH 14/16] =?UTF-8?q?[=E7=A7=AF=E5=88=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E7=A7=AF=E5=88=86=E8=AE=A1=E7=AE=97=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCreditHistoryServiceImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 9a95815b3..6f13ce0ce 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -224,9 +224,6 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (record.getCreditAmount() == null) { record.setCreditAmount(currentCreditAmount); } - if (record.getCreditNum() == null) { - record.setCreditNum(0); - } int creditChangeNumOrigin = creditIncrement(record); int creditChangeNum = creditChangeNumOrigin ; From 63b112e9c1f475638e7929840fc108daf53dc958 Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 20:22:39 +0800 Subject: [PATCH 15/16] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D][=E6=95=B0=E6=8D=AE]?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=AF=E5=88=86=E6=8E=A5=E5=8F=A3=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=95=B0=E6=8D=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/sys/DataInitController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index fee8572de..fb8cfeeab 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -124,7 +124,8 @@ public class DataInitController extends BaseController { WxCreditHistory toUpdateCreditHistory = new WxCreditHistory(); toUpdateCreditHistory.setId(wxCreditHistory.getId()); - toUpdateCreditHistory.setCreditNum(newCredit); + toUpdateCreditHistory.setCreditNum(credit); + toUpdateCreditHistory.setCreditAmount(newCredit); creditHistoryMapper.updateByPrimaryKeySelective(toUpdateCreditHistory); } }); From 855b40387cb38c53d9b733a34ceaf7af876ea4a1 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 17 Sep 2019 20:42:47 +0800 Subject: [PATCH 16/16] =?UTF-8?q?[=E7=A7=AF=E5=88=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E7=A7=AF=E5=88=86=E8=A1=A5=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/WxCouponOrderMapper.xml | 4 +- .../controller/sys/DataInitController.java | 99 +++++++++++++++++-- 2 files changed, 96 insertions(+), 7 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 8663c25d8..5359563fe 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -795,7 +795,9 @@ select from wx_coupon_order co, wx_merchant_b_user mbu where mbu.id = co.b_user_id - and mbu.merchant_id = #{merchantId} + + and mbu.merchant_id = #{merchantId} + AND co.update_date > #{startDate,jdbcType=TIMESTAMP} diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index fb8cfeeab..6c0b18d6a 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -6,20 +6,20 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumMsgModel; +import com.iformall.enums.EnumScoreType; +import com.iformall.enums.EnumUserType; import com.iformall.mapper.*; import com.iformall.service.WxCreditHistoryService; import com.iformall.utils.DateUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -47,14 +47,25 @@ public class DataInitController extends BaseController { @Resource private WxCUserBasicInfoMapper cUserBasicInfoMapper; + @Resource + private WxCouponMapper couponMapper; + + @Resource + private WxCouponOrderMapper couponOrderMapper; + + @Resource + private WxMerchantBUserMapper merchantBUserMapper; + + @GetMapping("/init") public ResultData init() { try { MallUserInfo userInfo = getUser(); if (userInfo.isFmSuperAdmin()) { + addBirthDayMsgModel(); return new ResultData(); } - addBirthDayMsgModel(); + } catch (Exception e) { log.error("DataInitController::init error ", e); return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); @@ -73,9 +84,30 @@ public class DataInitController extends BaseController { try { MallUserInfo userInfo = getUser(); if(userInfo.isFmSuperAdmin()) { + doFixCredit(); + return new ResultData(); + } + } catch (Exception e) { + log.error("DataInitController::fixCredit error ", e); + return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); + } + + return new ResultData(); + } + + /** + * 核销积分数据修复 + * + * @return + */ + @GetMapping("/fixVerifyCredit") + public ResultData fixVerifyCredit() { + try { + MallUserInfo userInfo = getUser(); + if(userInfo.isFmSuperAdmin()) { + doFixVerifyCredit(); return new ResultData(); } - doFixCredit(); } catch (Exception e) { log.error("DataInitController::fixCredit error ", e); return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); @@ -131,6 +163,61 @@ public class DataInitController extends BaseController { }); } + @Transactional(rollbackFor = Exception.class) + public void doFixVerifyCredit() { + // 1 获取券码 + Map dateMap = new HashMap(); + dateMap.put("startDate", "2019-09-16 22:00:00"); + List coList = couponOrderMapper.findListOfVerifiedByDate(dateMap); + // 2 重新计算积分,比较是否需要修复 + coList.forEach(co -> { + WxCUser cuUser = cUserMapper.selectByPrimaryKey(co.getcUserId()); + WxCUserBasicInfo userBasicInfo = cUserBasicInfoMapper.selectByPrimaryKey(co.getcUserId()); + //排查不存在的用户 + if (Objects.isNull(cuUser) && Objects.isNull(userBasicInfo)) { + log.debug("用户不存在 id: {}", co.getId()); + return; + } + + WxCoupon coupon = couponMapper.selectByPrimaryKey(co.getCouponId()); + + WxMerchantBUser buUser = merchantBUserMapper.selectByPrimaryKey(co.getBUserId()); + + Map result = creditHistoryService.findByMerchantIdAndSpend(buUser.getMerchantId(), String.valueOf(co.getCouponPriceStr()), co.getCUserId(), co.getTenantId()); + Integer credit = result.get("credit"); + + WxCreditHistory creditHistory = new WxCreditHistory(); + creditHistory.setOperatorType(EnumUserType.BUSER.getCode()); + creditHistory.setOperatorId(buUser.getId()); + creditHistory.setCUserId(co.getcUserId()); + creditHistory.setCreateDate(co.getUpdateDate()); + creditHistory.setTenantId(co.getTenantId()); + creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); + creditHistory.setCouponId(coupon.getId()); + creditHistory.setBusinessId(coupon.getBusiness()); + creditHistory.setSpend(co.getCouponPrice()); + //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 + creditHistory.setMerchantId(buUser.getMerchantId()); + creditHistoryService.saveOrUpdate(creditHistory); + + //用户新积分 + Integer newCredit = cuUser.getCredit() + credit; + + // 4 更新积分 + WxCUser toUpdateCUser = new WxCUser(); + toUpdateCUser.setId(co.getCUserId()); + toUpdateCUser.setCredit(newCredit); + toUpdateCUser.setUpdateDate(new Date()); + cUserMapper.updateByPrimaryKeySelective(toUpdateCUser); + + WxCUserBasicInfo toUpdateBasicInfo = new WxCUserBasicInfo(); + toUpdateBasicInfo.setId(co.getCUserId()); + toUpdateBasicInfo.setCredit(newCredit); + toUpdateBasicInfo.setUpdateDate(new Date()); + cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdateBasicInfo); + }); + } + /** * 增加会员生日短信模板 */