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());
}