From 486f80df676666a0a4edb16062cb219f3754e1d0 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 12:07:38 +0800 Subject: [PATCH 1/6] fix activity --- .../db/migration/V2023053000001_activity.sql | 4 ++ .../db/migration/V2023053000001_douyin.sql | 3 ++ .../com/iformall/domain/po/WxActivity.java | 12 ++++++ .../com/iformall/enums/EnumScoreType.java | 1 + .../impl/WxActivityJoinServiceImpl.java | 39 +++++++++++++++++-- .../impl/WxCreditHistoryServiceImpl.java | 4 ++ .../service/impl/WxScoreRulesServiceImpl.java | 26 +++++++++++++ .../resources/mapper/WxActivityMapper.xml | 8 +++- 8 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2023053000001_activity.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023053000001_activity.sql b/mallinkAdmin/src/main/resources/db/migration/V2023053000001_activity.sql new file mode 100644 index 000000000..a42727f8b --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2023053000001_activity.sql @@ -0,0 +1,4 @@ +ALTER TABLE `mallink`.`wx_activity` ADD COLUMN `is_gain_credit` Integer(1) NOT NULL DEFAULT 0 COMMENT '是否获得积分'; +ALTER TABLE `mallink`.`wx_activity` ADD COLUMN `gain_credit` Integer(11) NOT NULL DEFAULT 0 COMMENT '获得的积分'; +ALTER TABLE `mallink`.`wx_activity` ADD COLUMN `is_score` Integer(1) NOT NULL DEFAULT 0 COMMENT '是否获得成长值'; +ALTER TABLE `mallink`.`wx_activity` ADD COLUMN `score` Integer(11) NOT NULL DEFAULT 0 COMMENT '获得的成长值'; \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023053000001_douyin.sql b/mallinkAdmin/src/main/resources/db/migration/V2023053000001_douyin.sql index 1b4f40bd6..976d2dc8f 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2023053000001_douyin.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2023053000001_douyin.sql @@ -1,3 +1,4 @@ +###自己后台要加上该配置#### CREATE TABLE `wx_mall_version` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', @@ -8,6 +9,8 @@ CREATE TABLE `wx_mall_version` ( ###现有的抖音版本都要设置该表 +###自己后台要加上该配置#### create table tt_goods_category_new like tt_goods_category; +###自己后台要加上该配置#### ALTER TABLE `mallink`.`wx_appinfo` ADD COLUMN `laike_id` varchar(30) COMMENT '来客ID'; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java index 00ef12db9..8571b1e79 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java @@ -125,6 +125,18 @@ public class WxActivity extends TenantEntity { @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "报名状态", name = "joinStatus") private Integer joinStatus; + + @io.swagger.annotations.ApiModelProperty(value = "是否获得积分EnumYesOrNo", name = "isGainCredit") + private Integer isGainCredit; + + @io.swagger.annotations.ApiModelProperty(value = "获得的积分", name = "gainCredit") + private Integer gainCredit; + + @io.swagger.annotations.ApiModelProperty(value = "是否获得成长值EnumYesOrNo", name = "isScore") + private Integer isScore; + + @io.swagger.annotations.ApiModelProperty(value = "获得的成长值", name = "score") + private Integer score; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java index 34c4333ed..98361a415 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java @@ -18,6 +18,7 @@ public enum EnumScoreType { CHANGE_CREDIT(11, "积分兑换"), REDUCE_CREDIT(12, "消费积分"), ACTIVITY_JOIN(13, "活动报名"), + ACTIVITY_JOIN_ADD(27,"活动报名增加积分"), CLEAN_CREDIT(14, "积分清零计划"), GAME_LES_CREDIT(15, "游戏消耗积分"), GAME_ADD_CREDIT(16, "游戏奖励积分"), diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java index e90a8adba..fa5ec4002 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java @@ -18,6 +18,8 @@ import com.iformall.mq.MqBaseProducer; import com.iformall.service.ExcelService; import com.iformall.service.WxActivityJoinService; import com.iformall.service.WxCreditHistoryService; +import com.iformall.service.WxScoreHistoryService; +import com.iformall.service.WxScoreRulesService; import com.iformall.utils.DateUtils; import com.iformall.utils.RedisLock; import org.apache.commons.lang3.StringUtils; @@ -69,6 +71,9 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { @Autowired WxCreditHistoryService wxCreditHistoryService; + + @Autowired + WxScoreRulesService wxScoreRulesService; @Override @@ -223,9 +228,14 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { throw new MallinkException(ErrorCode.ACTIVITY_PERSON_LIMITED.getCode(),"活动报名人数已满!"); } } - + setCreditAndScore(wxActivity, wxActivityJoin,user); + return new ResultData(); + } + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + public void setCreditAndScore(WxActivity wxActivity,WxActivityJoin wxActivityJoin,WxCUserBasicInfo user) { //查询是否消耗积分 - if (wxActivity.getUseCredit().equals(EnumActivityUseCreditStatus.YES.getCode())) { + if (wxActivity.getUseCredit().equals(EnumActivityUseCreditStatus.YES.getCode()) && null != wxActivity.getCredit() && wxActivity.getCredit() > 0) { Integer credit = wxActivity.getCredit(); //积分历史 WxCreditHistory wxCreditHistory = new WxCreditHistory(); @@ -240,8 +250,29 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { wxCreditHistory.setOperatorId(wxActivityJoin.getUserId()); wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxActivity); } - - return new ResultData(); + + //查询是否获得积分 + if (wxActivity.getIsGainCredit().equals(EnumYesOrNo.YES.getCode()) && null != wxActivity.getGainCredit() && wxActivity.getGainCredit() > 0 ) { + Integer gainCredit = wxActivity.getGainCredit(); + //积分历史 + WxCreditHistory wxCreditHistory = new WxCreditHistory(); +// wxCreditHistory.updateTenantInfo(wxActivity); + wxCreditHistory.setTenantId(wxActivity.getFinalTenantId()); + wxCreditHistory.setFinalTenantId(wxActivity.getFinalTenantId()); + wxCreditHistory.setCUserId(wxActivityJoin.getUserId()); + wxCreditHistory.setCreditNum(gainCredit); + wxCreditHistory.setCreditType(EnumScoreType.ACTIVITY_JOIN_ADD.getCode()); + wxCreditHistory.setChangePurpose(EnumScoreType.ACTIVITY_JOIN_ADD.getMessage()+"["+wxActivity.getTitle()+"]"); + wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); + wxCreditHistory.setOperatorId(wxActivityJoin.getUserId()); + wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxActivity); + } + + //查询是否获得成长值 + if (wxActivity.getIsScore().equals(EnumYesOrNo.YES.getCode()) && null != wxActivity.getScore() && wxActivity.getScore() > 0 ) { + Integer score = wxActivity.getScore(); + wxScoreRulesService.addScore2(wxActivity, EnumScoreType.ACTIVITY_JOIN_ADD, user, score); + } } @Override 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 4286a96c0..9e010e613 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -865,6 +865,10 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (record.getCreditType() == EnumScoreType.ACTIVITY_JOIN.getCode()) { return reduceCredit(record,tenantEntity); } + if (record.getCreditType() == EnumScoreType.ACTIVITY_JOIN_ADD.getCode()) { + record.setRulesTenantId(tenantEntity.getTenantId()); + return record.getCreditNum(); + } if (record.getCreditType() == EnumScoreType.GAME_LES_CREDIT.getCode()) { return reduceCredit(record,tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java index 22aa3c566..ed4dac4d1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java @@ -400,6 +400,15 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { return addScoreNumber; } + + + private int simpleAddScore(TenantEntity tenantEntity,Long userId, Integer score) { + // 5. 增长的成长值 + updateScore(userId,tenantEntity, score); + // 6. 记录历史 + recordSimpleAddScoreHistory(tenantEntity,EnumScoreType.ACTIVITY_JOIN_ADD,userId,score); + return score; + } private int bindCarAddScore(TenantEntity tenantEntity,WxCUserBasicInfo user) { @@ -559,6 +568,19 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { history.setScoreAmount(addScoreNumber); wxScoreHistoryMapper.insert(history); } + + private void recordSimpleAddScoreHistory(TenantEntity tenantEntity,EnumScoreType scoreType,Long userId,int addScoreNumber) { + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(tenantEntity.getFinalTenantId()); + history.setRulesTenantId(tenantEntity.getTenantId()); + history.setCUserId(userId); + history.setCreateDate(new Date()); + history.setScoreType(scoreType.getCode()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); + } private void recordReduceScoreHistory(TenantEntity tenantEntity,int reduceScore, String reason, Long id, EnumScoreType wechatPhone) { final IdWorker idWorker = IdWorker.get(); @@ -651,6 +673,10 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { boolean bHaveCUser = (boolean)(param2); return memResetScore(tenantEntity,user, bHaveCUser); } + case ACTIVITY_JOIN_ADD: { + Integer score = (Integer)(param2); + return simpleAddScore(tenantEntity,user.getId(), score); + } default: break; } diff --git a/mallinkService/src/main/resources/mapper/WxActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxActivityMapper.xml index a00c4d9b4..878fce328 100644 --- a/mallinkService/src/main/resources/mapper/WxActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxActivityMapper.xml @@ -29,13 +29,17 @@ - + + + + + `id`,`tenant_id`,`parent_tenant_id`,`cover_img`,`title`,`sub_title`,`detail`,`html`,`activity_type`,`signup_examine`,`person_limit`,`activity_start_time`,`activity_end_time`, `use_credit`,`credit`,`type`,`status`,`start_time`,`end_time`,`question`,`is_expired`,`create_time`,`update_time`,`use_img`, - `img_detail`,`send_msg`,`selectques` + `img_detail`,`send_msg`,`selectques`,`is_gain_credit`,`gain_credit`,`is_score`,`score` From d9765e1b0285098738e03f377f48bcb4da6b890b Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 13:34:54 +0800 Subject: [PATCH 2/6] fix --- .../iformall/controller/WxInfoController.java | 1 + .../controller/WxMerchantBUserController.java | 55 ++++++++++++++----- .../iformall/common/SysConfigConstant.java | 1 + 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java index b8235eccf..86696f3aa 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java @@ -156,6 +156,7 @@ public class WxInfoController extends BaseController { //处理登陆用户 cUser = cuserFactory.getBUserService(appPlat).handleLoginUser(cUser,null); resultMap.put("token", cUser.getToken()); + resultMap.put("up", cUser.getPhone()); // request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); // request.setAttribute(Constant.TENANT_ID, buUser.getTenantId()); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index d17e459f3..413f003e5 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -7,12 +7,15 @@ import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.common.SysConfigConstant; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxMerchantBuInfoVo; import com.iformall.enums.EnumCreditLockedStatus; import com.iformall.enums.EnumEnableType; import com.iformall.enums.EnumMerchantBUserStatus; import com.iformall.enums.EnumMerchantStatus; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.utils.Constant; import com.iformall.utils.HashUtil; @@ -62,6 +65,9 @@ public class WxMerchantBUserController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private SysConfigService sysConfigService; + @RedisCache @ApiOperation("查寻当bUser详情接口") @@ -129,6 +135,7 @@ public class WxMerchantBUserController extends BaseController { @ApiOperation(value = "用户登录", notes = "{" + "\"appId\":\"string\"," + "\"phone\":\"string\",\"password\":\"string\"," + + "\"up\":\"string\","+ "\"latitude\":\"string\",\"longitude\":\"string\"}") public ResultData userLogin(@RequestBody Map map) { logger.debug(map.toString()); @@ -138,6 +145,8 @@ public class WxMerchantBUserController extends BaseController { String password = map.get("password"); String latitude = map.get("latitude"); String longitude = map.get("longitude"); + //当前登陆人的授权手机号 + String userPhone = map.get("up"); //登录凭证不能为空 if (StringUtils.isBlank(phone)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空"); @@ -176,12 +185,12 @@ public class WxMerchantBUserController extends BaseController { ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; -// try { -// wxMerchantBUserService.saveOrUpdate(orgUser); -// } catch (Exception e) { -// logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); -// return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); -// } + try { + checkLoginUserPhone(orgUser, userPhone); + }catch(Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + Map resultMap = new HashMap<>(); resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); @@ -221,17 +230,38 @@ public class WxMerchantBUserController extends BaseController { return new ResultData(ErrorCode.USER_IS_EMPTY); } } + + private void checkLoginUserPhone(WxMerchantBUser orgUser,String userPhone) throws Exception { + if (StringUtils.isBlank(userPhone) || "undefined".equals(userPhone.toLowerCase())) { + return; + } + SysConfig config = sysConfigService.getByKey(SysConfigConstant.merchant_Login_CheckPhone, orgUser); + if (null != config ) { + String v = config.getConfigItemValue(); + if (!StringUtils.isBlank(v)) { + Integer iv = Integer.parseInt(v); + if (iv.intValue() == EnumYesOrNo.YES.getCode().intValue()) { + //校验当前登陆人的授权手机号和账号手机号是否一致 + if (!userPhone.equals(orgUser.getPhone())) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权手机号非登录账号,不允许登录"); + } + } + } + } + } @TenantIgnore @AuthIgnore @PostMapping("/selectMerchant") @ApiOperation(value = "选择商户", notes = "{" + "\"buUserId\":\"string\"," + + "\"up\":\"string\","+ "\"merchantId\":\"string\"}") public ResultData selectMerchant(@RequestBody Map map) { String buUserIdStr = map.get("buUserId"); String merchantIdStr = map.get("merchantId"); - + //当前登陆人的授权手机号 + String userPhone = map.get("up"); if (StringUtils.isBlank(buUserIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "buUserId不能为空"); } @@ -248,12 +278,11 @@ public class WxMerchantBUserController extends BaseController { if (orgUser != null) { ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; -// try { -// wxMerchantBUserService.saveOrUpdate(orgUser); -// } catch (Exception e) { -// logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); -// return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); -// } + try { + checkLoginUserPhone(orgUser, userPhone); + }catch(Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } Map resultMap = new HashMap<>(); resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); diff --git a/mallinkService/src/main/java/com/iformall/common/SysConfigConstant.java b/mallinkService/src/main/java/com/iformall/common/SysConfigConstant.java index 5326e197b..220c4e39a 100644 --- a/mallinkService/src/main/java/com/iformall/common/SysConfigConstant.java +++ b/mallinkService/src/main/java/com/iformall/common/SysConfigConstant.java @@ -9,5 +9,6 @@ public class SysConfigConstant { public static final String coupon_list_show_selled = "couponListShowSelled"; public static final String member_seconds_key="memberSeconds"; public static final String merchant_credit_locked="merchantCreditLocked"; + public static final String merchant_Login_CheckPhone = "merchantLoginCheckPhone"; } From 550a9a08cc36015914b509ad662b9810c5e70850 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 14:01:24 +0800 Subject: [PATCH 3/6] fix bug --- .../src/main/java/com/iformall/controller/WxInfoController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java index 86696f3aa..b8235eccf 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java @@ -156,7 +156,6 @@ public class WxInfoController extends BaseController { //处理登陆用户 cUser = cuserFactory.getBUserService(appPlat).handleLoginUser(cUser,null); resultMap.put("token", cUser.getToken()); - resultMap.put("up", cUser.getPhone()); // request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); // request.setAttribute(Constant.TENANT_ID, buUser.getTenantId()); From 9cc394fe93afc8d6d5f102f1bb9507c3ef574d75 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 14:24:57 +0800 Subject: [PATCH 4/6] fix bug --- .../controller/WxMerchantBUserController.java | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index 413f003e5..b0fceda33 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -10,6 +10,7 @@ import com.iformall.common.ResultData; import com.iformall.common.SysConfigConstant; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxMerchantBuInfoVo; +import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumCreditLockedStatus; import com.iformall.enums.EnumEnableType; import com.iformall.enums.EnumMerchantBUserStatus; @@ -17,6 +18,7 @@ import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; import com.iformall.service.*; +import com.iformall.service.cuser.CUserServiceFactory; import com.iformall.utils.Constant; import com.iformall.utils.HashUtil; import com.iformall.utils.IPUtil; @@ -68,6 +70,9 @@ public class WxMerchantBUserController extends BaseController { @Autowired private SysConfigService sysConfigService; + @Autowired + private CUserServiceFactory cuserFactory; + @RedisCache @ApiOperation("查寻当bUser详情接口") @@ -135,7 +140,6 @@ public class WxMerchantBUserController extends BaseController { @ApiOperation(value = "用户登录", notes = "{" + "\"appId\":\"string\"," + "\"phone\":\"string\",\"password\":\"string\"," + - "\"up\":\"string\","+ "\"latitude\":\"string\",\"longitude\":\"string\"}") public ResultData userLogin(@RequestBody Map map) { logger.debug(map.toString()); @@ -145,8 +149,6 @@ public class WxMerchantBUserController extends BaseController { String password = map.get("password"); String latitude = map.get("latitude"); String longitude = map.get("longitude"); - //当前登陆人的授权手机号 - String userPhone = map.get("up"); //登录凭证不能为空 if (StringUtils.isBlank(phone)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空"); @@ -167,6 +169,11 @@ public class WxMerchantBUserController extends BaseController { if(!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())){ return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); } + + EnumAppPlat appPlat = EnumAppPlat.getByCode(wxAppinfo.getPlat()); + if(appPlat == null){ + return new ResultData(ErrorCode.APP_PLAT_ERROR); + } WxMerchantBUser userQ = new WxMerchantBUser(); userQ.updateTenantInfo(wxAppinfo); @@ -184,16 +191,14 @@ public class WxMerchantBUserController extends BaseController { // check merchant 状态 ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; - + Map resultMap = new HashMap<>(); + resultMap.put("bUserId", orgUser.getId()); + resultMap.put("logined", true); try { - checkLoginUserPhone(orgUser, userPhone); + checkLoginUserPhone(orgUser, orgUser.getId(),appPlat); }catch(Exception e) { return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } - - Map resultMap = new HashMap<>(); - resultMap.put("bUserId", orgUser.getId()); - resultMap.put("logined", true); // request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); return new ResultData(resultMap); } else { @@ -231,10 +236,17 @@ public class WxMerchantBUserController extends BaseController { } } - private void checkLoginUserPhone(WxMerchantBUser orgUser,String userPhone) throws Exception { - if (StringUtils.isBlank(userPhone) || "undefined".equals(userPhone.toLowerCase())) { + private void checkLoginUserPhone(WxMerchantBUser orgUser,Long bUserId,EnumAppPlat appPlat) throws Exception { + if (null == bUserId) { return; } + CUser user = cuserFactory.getBUserService(appPlat).getById(bUserId, orgUser.getTenantId()); + if (null == user) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权信息未查询到,请重新登录"); + } + if (StringUtils.isBlank(user.getPhone())) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户未授权手机号,请重新登录并授权"); + } SysConfig config = sysConfigService.getByKey(SysConfigConstant.merchant_Login_CheckPhone, orgUser); if (null != config ) { String v = config.getConfigItemValue(); @@ -242,7 +254,7 @@ public class WxMerchantBUserController extends BaseController { Integer iv = Integer.parseInt(v); if (iv.intValue() == EnumYesOrNo.YES.getCode().intValue()) { //校验当前登陆人的授权手机号和账号手机号是否一致 - if (!userPhone.equals(orgUser.getPhone())) { + if (!user.getPhone().equals(orgUser.getPhone())) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权手机号非登录账号,不允许登录"); } } @@ -255,20 +267,17 @@ public class WxMerchantBUserController extends BaseController { @PostMapping("/selectMerchant") @ApiOperation(value = "选择商户", notes = "{" + "\"buUserId\":\"string\"," + - "\"up\":\"string\","+ "\"merchantId\":\"string\"}") public ResultData selectMerchant(@RequestBody Map map) { String buUserIdStr = map.get("buUserId"); String merchantIdStr = map.get("merchantId"); - //当前登陆人的授权手机号 - String userPhone = map.get("up"); if (StringUtils.isBlank(buUserIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "buUserId不能为空"); } if (StringUtils.isBlank(merchantIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); } - + WxMerchantBUser userQ = new WxMerchantBUser(); userQ.setId(Long.valueOf(buUserIdStr)); userQ.setMerchantId(Long.valueOf(merchantIdStr)); @@ -278,14 +287,14 @@ public class WxMerchantBUserController extends BaseController { if (orgUser != null) { ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; + Map resultMap = new HashMap<>(); + resultMap.put("bUserId", orgUser.getId()); + resultMap.put("logined", true); try { - checkLoginUserPhone(orgUser, userPhone); + checkLoginUserPhone(orgUser, orgUser.getId(),this.getCUser().getAppPlat()); }catch(Exception e) { return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } - Map resultMap = new HashMap<>(); - resultMap.put("bUserId", orgUser.getId()); - resultMap.put("logined", true); return new ResultData(resultMap); } else { logger.error("B端用户不存在"); From 40d17b34ad16a506cf78f09fac4e53276d9cc510 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 15:00:09 +0800 Subject: [PATCH 5/6] fix --- .../com/iformall/controller/WxMerchantBUserController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index b0fceda33..f767cfe73 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -242,10 +242,10 @@ public class WxMerchantBUserController extends BaseController { } CUser user = cuserFactory.getBUserService(appPlat).getById(bUserId, orgUser.getTenantId()); if (null == user) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权信息未查询到,请重新登录"); + return; } if (StringUtils.isBlank(user.getPhone())) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户未授权手机号,请重新登录并授权"); + return; } SysConfig config = sysConfigService.getByKey(SysConfigConstant.merchant_Login_CheckPhone, orgUser); if (null != config ) { From b585b5c3b2707c7525faf8986d3fe5f011301632 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Mon, 29 May 2023 15:24:31 +0800 Subject: [PATCH 6/6] fix bug --- .../iformall/controller/BaseController.java | 38 +++++++++++++ .../iformall/controller/WxInfoController.java | 5 ++ .../controller/WxMerchantBUserController.java | 56 ++++++------------- 3 files changed, 61 insertions(+), 38 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java index 86850f3cc..41ff0763f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java @@ -5,20 +5,26 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumPayVersion; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.CUserTokenService; +import com.iformall.service.SysConfigService; import com.iformall.utils.RedisCacheUtils; import lombok.extern.slf4j.Slf4j; import com.iformall.common.ErrorCode; +import com.iformall.common.SysConfigConstant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.exception.MallinkException; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxMerchantBUserService; import com.iformall.service.WxPayAccountService; +import com.iformall.service.cuser.CUserServiceFactory; import com.iformall.service.wechat.FmOpenService; import com.iformall.utils.Constant; import com.iformall.utils.IPUtil; import com.iformall.utils.MaUtil; + +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; @@ -45,6 +51,12 @@ public class BaseController { @Autowired private WxPayAccountService wxPayAccountService; + @Autowired + private SysConfigService sysConfigService; + + @Autowired + private CUserServiceFactory cuserFactory; + @Autowired MaUtil maUtil; @@ -172,4 +184,30 @@ public class BaseController { String ipaddress = IPUtil.getIpAddr(request); return ipaddress; } + + public void checkLoginUserPhone(WxMerchantBUser orgUser,Long bUserId,EnumAppPlat appPlat) throws Exception { + if (null == bUserId) { + return; + } + CUser user = cuserFactory.getBUserService(appPlat).getById(bUserId, orgUser.getTenantId()); + if (null == user) { + return; + } + if (StringUtils.isBlank(user.getPhone())) { + return; + } + SysConfig config = sysConfigService.getByKey(SysConfigConstant.merchant_Login_CheckPhone, orgUser); + if (null != config ) { + String v = config.getConfigItemValue(); + if (!StringUtils.isBlank(v)) { + Integer iv = Integer.parseInt(v); + if (iv.intValue() == EnumYesOrNo.YES.getCode().intValue()) { + //校验当前登陆人的授权手机号和账号手机号是否一致 + if (!user.getPhone().equals(orgUser.getPhone())) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权手机号非登录账号,不允许登录"); + } + } + } + } + } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java index b8235eccf..72288635f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java @@ -162,6 +162,11 @@ public class WxInfoController extends BaseController { // if (StringUtils.isNotBlank(buUser.getParentTenantId())) { // request.setAttribute(Constant.PARENT_TENANT_ID, buUser.getParentTenantId()); // } + try { + checkLoginUserPhone(buUser, buUser.getId(),appPlat); + }catch(Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } return new ResultData(resultMap); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index f767cfe73..975a12f8b 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -67,12 +67,6 @@ public class WxMerchantBUserController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; - @Autowired - private SysConfigService sysConfigService; - - @Autowired - private CUserServiceFactory cuserFactory; - @RedisCache @ApiOperation("查寻当bUser详情接口") @@ -194,11 +188,6 @@ public class WxMerchantBUserController extends BaseController { Map resultMap = new HashMap<>(); resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); - try { - checkLoginUserPhone(orgUser, orgUser.getId(),appPlat); - }catch(Exception e) { - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } // request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); return new ResultData(resultMap); } else { @@ -236,47 +225,26 @@ public class WxMerchantBUserController extends BaseController { } } - private void checkLoginUserPhone(WxMerchantBUser orgUser,Long bUserId,EnumAppPlat appPlat) throws Exception { - if (null == bUserId) { - return; - } - CUser user = cuserFactory.getBUserService(appPlat).getById(bUserId, orgUser.getTenantId()); - if (null == user) { - return; - } - if (StringUtils.isBlank(user.getPhone())) { - return; - } - SysConfig config = sysConfigService.getByKey(SysConfigConstant.merchant_Login_CheckPhone, orgUser); - if (null != config ) { - String v = config.getConfigItemValue(); - if (!StringUtils.isBlank(v)) { - Integer iv = Integer.parseInt(v); - if (iv.intValue() == EnumYesOrNo.YES.getCode().intValue()) { - //校验当前登陆人的授权手机号和账号手机号是否一致 - if (!user.getPhone().equals(orgUser.getPhone())) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前用户授权手机号非登录账号,不允许登录"); - } - } - } - } - } - @TenantIgnore @AuthIgnore @PostMapping("/selectMerchant") @ApiOperation(value = "选择商户", notes = "{" + + "\"appId\":\"string\"," + "\"buUserId\":\"string\"," + "\"merchantId\":\"string\"}") public ResultData selectMerchant(@RequestBody Map map) { String buUserIdStr = map.get("buUserId"); String merchantIdStr = map.get("merchantId"); + String appId = map.get("appId"); if (StringUtils.isBlank(buUserIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "buUserId不能为空"); } if (StringUtils.isBlank(merchantIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); } + if (StringUtils.isBlank(appId)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空"); + } WxMerchantBUser userQ = new WxMerchantBUser(); userQ.setId(Long.valueOf(buUserIdStr)); @@ -291,7 +259,19 @@ public class WxMerchantBUserController extends BaseController { resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); try { - checkLoginUserPhone(orgUser, orgUser.getId(),this.getCUser().getAppPlat()); + WxAppinfo wxAppinfo = getAppInfo(appId); + if(wxAppinfo == null){ + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + if(!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())){ + return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); + } + + EnumAppPlat appPlat = EnumAppPlat.getByCode(wxAppinfo.getPlat()); + if(appPlat == null){ + return new ResultData(ErrorCode.APP_PLAT_ERROR); + } + checkLoginUserPhone(orgUser, orgUser.getId(),appPlat); }catch(Exception e) { return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); }