3
0
Fork 0

Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
cabbage 2025-07-10 17:03:17 +08:00
commit 0ab028638d
12 changed files with 143 additions and 15 deletions

View File

@ -1058,6 +1058,8 @@ public class CuMemberController extends BaseController {
if (cuMember == null) { if (cuMember == null) {
return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_NOT_EXITS)); return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_NOT_EXITS));
} }
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
cuMember.setPkSettleGradeValue(gradeDTO.getGradeValue());
return AjaxResult.success(BeanUtil.copyProperties(cuMember, CuMemberExt.class)); return AjaxResult.success(BeanUtil.copyProperties(cuMember, CuMemberExt.class));
} }
} }

View File

@ -22,6 +22,7 @@ import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.member.handleBusiness.CuHandleBusiness; import com.hzs.common.domain.member.handleBusiness.CuHandleBusiness;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.system.base.BdCountry; import com.hzs.common.domain.system.base.BdCountry;
import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.security.utils.SecurityUtils;
@ -40,6 +41,7 @@ import com.hzs.member.handlebusiness.vo.BusinessMemberVO;
import com.hzs.member.handlebusiness.vo.BusinessTypeValueVO; import com.hzs.member.handlebusiness.vo.BusinessTypeValueVO;
import com.hzs.member.handlebusiness.vo.HandleBusinessShowVO; import com.hzs.member.handlebusiness.vo.HandleBusinessShowVO;
import com.hzs.member.handlebusiness.vo.HandleBusinessVO; import com.hzs.member.handlebusiness.vo.HandleBusinessVO;
import com.hzs.retail.member.service.ICuMemberRetailRegionService;
import com.hzs.system.base.ICountryServiceApi; import com.hzs.system.base.ICountryServiceApi;
import com.hzs.system.config.IAwardsServiceApi; import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.IGradeServiceApi;
@ -93,6 +95,8 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
private ICuMemberBusinessLicenseService cuMemberBusinessLicenseService; private ICuMemberBusinessLicenseService cuMemberBusinessLicenseService;
@Autowired @Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService; private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private ICuMemberRetailRegionService cuMemberRetailRegionService;
@DubboReference @DubboReference
IGradeServiceApi iGradeServiceApi; IGradeServiceApi iGradeServiceApi;
@ -752,19 +756,19 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
if (CollUtil.isNotEmpty(businessMemberListUpdate)) { if (CollUtil.isNotEmpty(businessMemberListUpdate)) {
for (BusinessMemberVO businessMemberVO : businessMemberListUpdate) { for (BusinessMemberVO businessMemberVO : businessMemberListUpdate) {
Integer updateGradeId = Integer.parseInt(businessMemberVO.getNewValue()); Integer updateGradeId = Integer.parseInt(businessMemberVO.getNewValue());
if (EGrade.COMPANY.getValue() == gradesMap.get(updateGradeId).getGradeValue()) { // if (EGrade.COMPANY.getValue() == gradesMap.get(updateGradeId).getGradeValue()) {
// 2025年6月20日 新等级 公司验全唯一 // // 2025年6月20日 新等级 公司验全唯一
int count = cuMemberService.validateCompanyCount(); // int count = cuMemberService.validateCompanyCount();
if (count > 0) { // if (count > 0) {
throw new ServiceException("已存在结算等级为公司的用户,不允许重复添加!"); // throw new ServiceException("已存在结算等级为公司的用户,不允许重复添加!");
} // }
} else if (EGrade.S_VIP.getValue() == gradesMap.get(updateGradeId).getGradeValue()) { // } else if (EGrade.S_VIP.getValue() == gradesMap.get(updateGradeId).getGradeValue()) {
// 2025年6月20日 新等级 分公司验省唯一 // // 2025年6月20日 新等级 分公司验省唯一
int count = cuMemberService.validateBranchOfficeCount(businessMemberVO.getAreaId(), businessMemberVO.getPkMember()); // int count = cuMemberService.validateBranchOfficeCount(businessMemberVO.getAreaId(), businessMemberVO.getPkMember());
if (count > 0) { // if (count > 0) {
throw new ServiceException("已存在结算绑定省的分公司用户,不允许重复添加!"); // throw new ServiceException("已存在结算绑定省的分公司用户,不允许重复添加!");
} // }
} // }
// 记录升级历史 // 记录升级历史
cuMemberLevel = CuMemberLevel.builder() cuMemberLevel = CuMemberLevel.builder()
.pkMember(businessMemberVO.getPkMember()) .pkMember(businessMemberVO.getPkMember())
@ -773,6 +777,17 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
.newLevel(Integer.parseInt(businessMemberVO.getNewValue())) .newLevel(Integer.parseInt(businessMemberVO.getNewValue()))
.upgradeTime(new Date()) .upgradeTime(new Date())
.build(); .build();
boolean delFlag = true;
if((EGrade.VIP.getValue() != Integer.parseInt(businessMemberVO.getOldValue()) && (EGrade.S_VIP.getValue() != Integer.parseInt(businessMemberVO.getOldValue())))
|| (EGrade.S_VIP.getValue() != Integer.parseInt(businessMemberVO.getOldValue()) && (EGrade.VIP.getValue() != Integer.parseInt(businessMemberVO.getOldValue())))
){
delFlag = false;
}
if(delFlag){
LambdaQueryWrapper<CuMemberRetailRegion> delWrapper = new LambdaQueryWrapper<>();
delWrapper.eq(CuMemberRetailRegion::getPkMember, businessMemberVO.getPkMember());
cuMemberRetailRegionService.remove(delWrapper);
}
cuMemberLevel.setPkCountry(handleBusinessVO.getPkCountry()); cuMemberLevel.setPkCountry(handleBusinessVO.getPkCountry());
cuMemberLevel.setPkCreator(loginUser.getUserId()); cuMemberLevel.setPkCreator(loginUser.getUserId());
cuMemberLevelList.add(cuMemberLevel); cuMemberLevelList.add(cuMemberLevel);

View File

@ -9,6 +9,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.annotation.RepeatSubmitSimple; import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.constant.RetailRegionTreeQueryConstants;
import com.hzs.common.core.constant.SysConstants; import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.constant.msg.AreaConstants; import com.hzs.common.core.constant.msg.AreaConstants;
import com.hzs.common.core.enums.EGrade; import com.hzs.common.core.enums.EGrade;
@ -75,6 +76,15 @@ public class RetailMemberController extends BaseController {
} }
return AjaxResult.success(retailMemberInfoVO); return AjaxResult.success(retailMemberInfoVO);
} }
// @GetMapping("/test")
// public AjaxResult test() {
// List<Tree<String>> test1 = iCuMemberRetailRegionService.getRegionTreeList(RetailRegionTreeQueryConstants.CITY);
// List<Tree<String>> test2 = iCuMemberRetailRegionService.getRegionTreeList(RetailRegionTreeQueryConstants.COUNTY);
// log.info("test1: {}", test1);
// log.info("test2: {}", test2);
// return AjaxResult.success();
// }
// /** // /**
// * 获取会员收益区域 // * 获取会员收益区域

View File

@ -1,6 +1,7 @@
package com.hzs.retail.member.controller.manage; package com.hzs.retail.member.controller.manage;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.annotation.Log; import com.hzs.common.core.annotation.Log;
@ -152,6 +153,9 @@ public class CuMemberRetailRegionController extends BaseController {
return AjaxResult.error(ConfigMsgConstants.MEMBER_RETAIL_REGION_REPEAT); return AjaxResult.error(ConfigMsgConstants.MEMBER_RETAIL_REGION_REPEAT);
} }
// 校验区域是否被占用 // 校验区域是否被占用
if(ObjectUtil.isEmpty(mrrExt.getCounty())){
mrrExt.setCounty(-1);
}
int cuMemberRetailRegion = cuMemberRetailRegionService.count(Wrappers.<CuMemberRetailRegion>lambdaQuery() int cuMemberRetailRegion = cuMemberRetailRegionService.count(Wrappers.<CuMemberRetailRegion>lambdaQuery()
.eq(CuMemberRetailRegion::getProvince, mrrExt.getProvince()) .eq(CuMemberRetailRegion::getProvince, mrrExt.getProvince())
.eq(CuMemberRetailRegion::getCity, mrrExt.getCity()) .eq(CuMemberRetailRegion::getCity, mrrExt.getCity())

View File

@ -99,4 +99,6 @@ public interface CuMemberRetailRegionMapper extends BaseMapper<CuMemberRetailReg
@Param("county") Integer county, @Param("county") Integer county,
@Param("systemType") Integer systemType); @Param("systemType") Integer systemType);
List<BdArea> getRegionTreeList(@Param("queryType") String queryType, @Param("userId") Long userId);
} }

View File

@ -30,7 +30,7 @@ public class RetailMemberRegionParam implements Serializable {
/** /**
* *
*/ */
@NotNull(message = "请选择收益区域") // @NotNull(message = "请选择收益区域")
private Integer county; private Integer county;
/** /**

View File

@ -1,5 +1,6 @@
package com.hzs.retail.member.service; package com.hzs.retail.member.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion; import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt; import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
@ -84,4 +85,10 @@ public interface ICuMemberRetailRegionService extends IService<CuMemberRetailReg
*/ */
void handleRepeatRegion(); void handleRepeatRegion();
/**
* 查询可选收益区域树结构 入参常量为 RetailRegionTreeQueryConstants
* @param queryType
* @return
*/
List<Tree<String>> getRegionTreeList(String queryType);
} }

View File

@ -1,15 +1,20 @@
package com.hzs.retail.member.service.impl; package com.hzs.retail.member.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.*; import com.hzs.common.core.constant.*;
import com.hzs.common.core.enums.*; import com.hzs.common.core.enums.*;
import com.hzs.common.core.exception.ServiceException; import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.core.service.RedisService; import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion; import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt; import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea; import com.hzs.common.domain.system.base.BdArea;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.retail.member.mapper.CuMemberRetailRegionMapper; import com.hzs.retail.member.mapper.CuMemberRetailRegionMapper;
import com.hzs.retail.member.param.RetailMemberRegionParam; import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.service.ICuMemberRetailAchieveService; import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
@ -20,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -204,4 +210,23 @@ public class CuMemberRetailRegionServiceImpl extends ServiceImpl<CuMemberRetailR
} }
} }
@Override
public List<Tree<String>> getRegionTreeList(String queryType) {
List<BdArea> areaList = baseMapper.getRegionTreeList(queryType, SecurityUtils.getUserId());
if (CollectionUtil.isEmpty(areaList)) {
return null;
}
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
treeNodeConfig.setDeep(3);
if(RetailRegionTreeQueryConstants.CITY.equals(queryType)){
treeNodeConfig.setDeep(2);
}
return TreeUtil.build(areaList, "0", treeNodeConfig,
(treeNode, tree) -> {
tree.setId(treeNode.getPkId().toString());
tree.setParentId(treeNode.getParent().toString());
tree.setName(treeNode.getName());
});
}
} }

View File

@ -856,7 +856,7 @@
</if> </if>
<if test='item.businessType == "113"'> <if test='item.businessType == "113"'>
<foreach collection="item.businessValueList" index="index" item="value"> <foreach collection="item.businessValueList" index="index" item="value">
pk_settle_grade = #{value}, pk_area_id = #{businessMemberList[${index}].areaId} pk_settle_grade = #{value}
</foreach> </foreach>
</if> </if>
<if test='item.businessType == "107"'> <if test='item.businessType == "107"'>

View File

@ -239,6 +239,50 @@
group by cmrr.province, cmrr.city, cmrr.county group by cmrr.province, cmrr.city, cmrr.county
having count(1) > 1 having count(1) > 1
</select> </select>
<select id="getRegionTreeList" resultType="com.hzs.common.domain.system.base.BdArea">
SELECT
pr.*,
nvl( region.num, 0 )
FROM
(
SELECT
ba.PK_ID,
ba.PARENT,
ba.NAME,
ba.BIND_NUM
FROM
bd_area ba
WHERE
ba.del_flag = 0
AND ba.pk_country = 1
AND ba.ENABLE_STATE = 0
) pr
LEFT JOIN (
SELECT
<if test="queryType != null and queryType == 'city'">
city id,
</if>
<if test="queryType != null and queryType == 'county'">
county id,
</if>
count( 1 ) num
FROM cu_member_retail_region
WHERE
del_flag = 0
AND PK_MEMBER != #{userId}
GROUP BY
<if test="queryType != null and queryType == 'city'">
city
</if>
<if test="queryType != null and queryType == 'county'">
county
</if>
) region ON pr.PK_ID = region.id
WHERE
nvl( region.num, 0 ) <![CDATA[ < ]]> pr.BIND_NUM
ORDER BY
nvl( region.num, 0 ) DESC
</select>
<!-- 更新非最新区域其它数据 --> <!-- 更新非最新区域其它数据 -->
<update id="updateRepeatDate"> <update id="updateRepeatDate">

View File

@ -0,0 +1,17 @@
package com.hzs.common.core.constant;
/**
* 用户绑定收益区域查询类型常量
*/
public class RetailRegionTreeQueryConstants {
/**
* 市级
*/
public static final String CITY = "city";
/**
* 区级
*/
public static final String COUNTY = "county";
}

View File

@ -0,0 +1,2 @@
ALTER TABLE "CU_MEMBER_RETAIL_REGION"
MODIFY ("COUNTY" NULL)