From 10f1422bc8f401b06b1e55ee63b23016d74abce8 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 28 二月 2024 11:34:09 +0800
Subject: [PATCH] 优化商户发券逻辑
---
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 200 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 155 insertions(+), 45 deletions(-)
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index 76a6a30..15f9a03 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.ExceptionUtil;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
@@ -461,7 +462,7 @@
}else{
shop.setCooperativeFlag(0);
}
- shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag()));
+ shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
shop.setUpdateTime(new Date());
shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId());
this.saveOrUpdate(shop);
@@ -482,7 +483,7 @@
}else{
shop.setFrozenFlag(0);
}
- shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag()));
+ shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
this.saveOrUpdate(shop);
}
@@ -493,13 +494,13 @@
* @param
* @return Integer
*/
- private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag,Integer accountFlag){
+ private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){
Integer shopStatus = 1;
if(frozenFlag == 1){
shopStatus = 0;
return shopStatus;
}
- if(authFlag == 0 || accountFlag==0){
+ if(authFlag == 0){
shopStatus = 3;
return shopStatus;
}
@@ -551,12 +552,13 @@
* @return
*/
@Override
- public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto){
+ public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto,List<Long> scope){
if (StringUtils.isNotBlank(mgtShopPageDto.getShopTags())) {
mgtShopPageDto.setShopTags(mgtShopPageDto.getShopTags().replace(",", "|"));
}
+
// 分页查询商铺信息
- List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto);
+ List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto,scope);
// 如果查询结果不为空
if (!mgtShopPageVoList.isEmpty()) {
// 创建签约用户ID集合和所属用户ID集合
@@ -598,8 +600,9 @@
shopPageVo.setSignUser(signUserMap.get(shopPageVo.getSignUserId()).getNickName());
}
if (belongUserMap!=null&&!belongUserMap.isEmpty()&&shopPageVo.getBelongUserId() != null) {
- shopPageVo.setBelongUser(belongUserMap.get(shopPageVo.getBelongUserId()).getNickName());
- shopPageVo.setBelongDept(belongUserMap.get(shopPageVo.getBelongUserId()).getDeptName());
+ MgtSysSimpleUserVo mgtSysSimpleUserVo = belongUserMap.get(shopPageVo.getBelongUserId());
+ shopPageVo.setBelongUser(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getNickName());
+ shopPageVo.setBelongDept(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getDeptName());
}
}
}
@@ -764,6 +767,7 @@
}else if(StringUtils.isNotBlank(appNearbyShopDto.getLatitude())&&StringUtils.isNotBlank(appNearbyShopDto.getLongitude())){
List<AppNearShopVo> appNearShopVos = shopMapper.getNearbyShops(appNearbyShopDto);
if(appNearShopVos.size() > 0){
+ log.info("候选店铺:{}", JSON.toJSONString(appNearShopVos));
StringBuffer to = new StringBuffer();
for (AppNearShopVo appNearShopVo : appNearShopVos) {
to.append(appNearShopVo.getLatitude() + "," + appNearShopVo.getLongitude() + ";");
@@ -780,7 +784,7 @@
List<TencentDistanceMatrixElements> elements = data.get(0).getElements();
for (int i = 0; i < elements.size(); i++) {
TencentDistanceMatrixElements matrix = elements.get(i);
- if(dis.compareTo(BigDecimal.ZERO) == 0 || dis.compareTo(new BigDecimal(matrix.getDistance())) > 0){
+ if(i == 0 || dis.compareTo(new BigDecimal(matrix.getDistance())) > 0){
dis = new BigDecimal(matrix.getDistance());
appNearShopVo = appNearShopVos.get(i);
}
@@ -843,7 +847,43 @@
List<Long> userIds = new ArrayList<>();
List<Long> shopIds = new ArrayList<>();
//如果是leader 查询leader下面所有的员工下的所有shopId
- if(remoteSysStaffService.isLeader()){
+// if(remoteSysStaffService.isLeader()){
+// userIds = sysUserService.getUserIdsByDept(userId).getData();
+// //根据用户所有id查询关联的商户id
+// MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
+// mgtBasePlatformDto.setUserIdList(userIds);
+// shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
+// List<Shop> shopList = this.getShopByBelongUserId(userId);
+// if(shopList!=null&&!shopList.isEmpty()){
+// for(Shop shop : shopList){
+// shopIds.add(shop.getShopId());
+// }
+// userIds.add(userId);
+// }
+// }else {
+// //普通员工查询商户归属的shopId
+// List<Shop> shopList = this.getShopByBelongUserId(userId);
+// if(shopList!=null&&!shopList.isEmpty()){
+// for(Shop shop : shopList){
+// shopIds.add(shop.getShopId());
+// }
+// userIds.add(userId);
+// }
+// }
+
+ // TODO: 2023/12/5 统一改成使用权限来控制数据
+ R<SysUser> sysUser = sysUserService.getSysUser(userId);
+ if(sysUser.getCode() != 200){
+ throw new RuntimeException(sysUser.getMsg());
+ }
+ //员工端数据权限(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)
+ //2/4暂未使用
+ String dataScopeEmployee = sysUser.getData().getDataScopeEmployee();
+ if(dataScopeEmployee.equals("1")){
+ userIds = null;
+ shopIds = null;
+ }
+ if(dataScopeEmployee.equals("3")){
userIds = sysUserService.getUserIdsByDept(userId).getData();
//根据用户所有id查询关联的商户id
MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
@@ -856,8 +896,8 @@
}
userIds.add(userId);
}
- }else {
- //普通员工查询商户归属的shopId
+ }
+ if(dataScopeEmployee.equals("5")){
List<Shop> shopList = this.getShopByBelongUserId(userId);
if(shopList!=null&&!shopList.isEmpty()){
for(Shop shop : shopList){
@@ -866,19 +906,10 @@
userIds.add(userId);
}
}
+
//分别查询
- StaffHomeShopTotalVo staffHomeShopTotalVo = new StaffHomeShopTotalVo();
- if(userIds!=null&&!userIds.isEmpty()){
- staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(userIds);
- }else{
- staffHomeShopTotalVo.setShopTotal(0);
- staffHomeShopTotalVo.setAgencyTotal(0);
- staffHomeShopTotalVo.setDealerTotal(0);
- }
- Integer shopTaskCount = 0;
- if(shopIds!=null&&!shopIds.isEmpty()){
- shopTaskService.getShopIngTotal(shopIds);
- }
+ StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(userIds);
+ Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds);
staffHomeShopTotalVo.setFollowMember(0);
staffHomeShopTotalVo.setNewMember(0);
staffHomeShopTotalVo.setShopTask(shopTaskCount);
@@ -1013,8 +1044,8 @@
* @return List<MgtShopListSimpleVo>
*/
@Override
- public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto){
- return shopMapper.listMgtShopSimpleVo(mgtShopListDto);
+ public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto,List<Long> scope){
+ return shopMapper.listMgtShopSimpleVo(mgtShopListDto,scope);
}
/**
@@ -1051,8 +1082,8 @@
* @date 2023/6/14 23:01
*/
@Override
- public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page, MgtShopAuthPageDto mgtShopAuthPageDto){
- return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto);
+ public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page, MgtShopAuthPageDto mgtShopAuthPageDto,List<Long> scope){
+ return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto,scope);
}
/**
@@ -1062,8 +1093,9 @@
* @return
*/
@Override
- public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto) {
- return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto);
+ public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto,
+ List<Long> scope) {
+ return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto,scope);
}
/**
@@ -1074,8 +1106,8 @@
* @date 2023/6/18 16:59
*/
@Override
- public MgtBulletinBoardVo boardShopTotal(){
- MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal();
+ public MgtBulletinBoardVo boardShopTotal(List<Long> userIds){
+ MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(userIds);
return mgtBulletinBoardVoShop;
}
@@ -1122,8 +1154,9 @@
*/
@Override
public void mgtShopHFTXAuth(MgtShopHFTXAuthDto mgtShopHFTXAuthDto) {
- ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("shop_id", mgtShopHFTXAuthDto.getShopId()));
- if(null != shopAuthenticationHftx && "Y".equals(shopAuthenticationHftx.getAuditStatus())){
+ ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>()
+ .eq("shop_id", mgtShopHFTXAuthDto.getShopId()).eq("is_delete", 0));
+ if(null != shopAuthenticationHftx && Arrays.asList("U", "Y").contains(shopAuthenticationHftx.getAuditStatus())){
throw new ServiceException("不能重复进件");
}
if(null == shopAuthenticationHftx){
@@ -1131,6 +1164,7 @@
shopAuthenticationHftx.setIsDelete(0);
shopAuthenticationHftx.setInsertTime(new Date());
}
+ String auditStatus = shopAuthenticationHftx.getAuditStatus();
BeanUtils.copyProperties(mgtShopHFTXAuthDto, shopAuthenticationHftx);
shopAuthenticationHftx.setReqSeqId(IdUtils.simpleUUID());
shopAuthenticationHftx.setAuditStatus("");
@@ -1139,13 +1173,18 @@
* 开始调起进件接口
*/
R<MerchantBasicdataVo> r = null;
- //用户
- if(mgtShopHFTXAuthDto.getType() == 1){
+ //用户(重新提交)
+ if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 1){
r = HuiFuTianXiaUtil.merchantBasicdataIndv(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
}
- //企业进件
- if(mgtShopHFTXAuthDto.getType() == 2){
+ //企业进件(重新提交)
+ if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 2){
r = HuiFuTianXiaUtil.merchantBasicdataEnt(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
+ }
+
+ //修改资料
+ if("Y".equals(auditStatus)){
+ r = HuiFuTianXiaUtil.merchantBasicdataModify(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
}
if(null == r){
throw new ServiceException("参数异常");
@@ -1186,11 +1225,13 @@
if("Y".equals(data.getAuditStatus())){
Shop shop = this.getByShopId(shopAuthenticationHftx.getShopId());
shop.setShopStatus(1);
+ shop.setAuthFlag(1);
this.updateById(shop);
}
}
return R.ok(data.getReqSeqId());
}
+
/**
* @description 获取平台商户统计
@@ -1208,7 +1249,7 @@
userIdList.add(mgtBasePlatformDto.getUserId());
} else {
MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
- mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+ mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getDeptId());
mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData();
userIdList = mgtUserIdByDept.getUserIdList();
}
@@ -1216,8 +1257,20 @@
mgtBasePlatformDto.setUserIdList(userIdList);
}
}
+ //数据权限
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ if(null != userIds){
+ List<Long> userIdList = mgtBasePlatformDto.getUserIdList();
+ if(null != userIdList){
+ userIdList.addAll(userIds);
+ }else{
+ userIdList = userIds;
+ }
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+
//获取基础统计
- MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal();
+ MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal(userIds);
plTotalShopTotalVo.setSignTotal(0);
List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
if (!shopIdList.isEmpty()) {
@@ -1438,17 +1491,37 @@
@Override
public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId){
List<Long> userIdList = new ArrayList<>();
- if(remoteSysStaffService.isLeader()){
+// if(remoteSysStaffService.isLeader()){
+// userIdList = sysUserService.getUserIdsByDept(userId).getData();
+// userIdList.add(userId);
+// }else {
+// userIdList.add(userId);
+// }
+
+ // TODO: 2023/12/5 统一改成使用权限来控制数据
+ R<SysUser> sysUser = sysUserService.getSysUser(userId);
+ if(sysUser.getCode() != 200){
+ throw new RuntimeException(sysUser.getMsg());
+ }
+ //员工端数据权限(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)
+ //2/4暂未使用
+ String dataScopeEmployee = sysUser.getData().getDataScopeEmployee();
+ if(dataScopeEmployee.equals("1")){
+ userIdList = null;
+ }
+ if(dataScopeEmployee.equals("3")){
userIdList = sysUserService.getUserIdsByDept(userId).getData();
userIdList.add(userId);
- }else {
+ }
+ if(dataScopeEmployee.equals("5")){
userIdList.add(userId);
}
+
StaffShopSimpleTotalVo shopTotal = shopMapper.getStaffSimpleTotal(1,userIdList);
StaffShopSimpleTotalVo agencyTotal = shopMapper.getStaffSimpleTotal(2,userIdList);
shopTotal.setAgencyTotal(agencyTotal.getShopTotal());
shopTotal.setOpenAgencyTotal(agencyTotal.getOpenShopTotal());
- shopTotal.setCloseAgencyTotal(agencyTotal.getCloseAgencyTotal());
+ shopTotal.setCloseAgencyTotal(agencyTotal.getCloseShopTotal());
return shopTotal;
}
@@ -1651,13 +1724,17 @@
private void applySuccessUpdateShopStatus(Long shopId){
// 更新商户状态为正常
Shop shop = this.getById(shopId);
- Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1,shop.getAccountFlag());
+ Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1);
LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.eq(Shop::getShopId, shopId)
.set(Shop::getShopStatus, shopStatus)
.set(Shop::getAuthFlag, 1);
this.update(updateWrapper);
}
+
+
+
+
/**
* @description
@@ -1779,7 +1856,7 @@
ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request);
if(StringUtils.isNotBlank(result.getAccount())){
shop.setAccountFlag(1);
- shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),1));
+ shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
this.saveOrUpdate(shop);
}
}
@@ -1838,4 +1915,37 @@
Integer pageSize = merchantBasicdataSettlementDto.getPageSize();
return HuiFuTianXiaUtil.getMerchantBasicdataSettlement(IdUtils.simpleUUID(), huifuId, startTime, endTime, pageNum.toString(), pageSize.toString());
}
+
+
+
+ /**
+ * @description
+ * @author jqs
+ * @date 2023/8/10 22:53
+ * @param cityCodes
+ * @return List<Long>
+ */
+ @Override
+ public List<Shop> listShopByCityCode(List<String> cityCodes){
+ return shopMapper.listShopByCityCode(cityCodes);
+ }
+
+
+ /**
+ * 根据员工id获取对应的门店
+ * @param userIds
+ * @return
+ */
+ @Override
+ public List<Shop> getShopBySysUserIds(List<Long> userIds) {
+ if(null == userIds || userIds.size() == 0){
+ return new ArrayList<>();
+ }
+ QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>().eq("del_flag", 0).ne("shop_status", -1);
+ if(null != userIds && userIds.size() > 0){
+ queryWrapper.in("belong_user_id", userIds);
+ }
+ List<Shop> list = this.list(queryWrapper);
+ return list;
+ }
}
--
Gitblit v1.7.1