Przeglądaj źródła

fixed 分佣提成关系迭代

fushengqian 1 rok temu
rodzic
commit
7346d4c9d6

+ 34 - 0
fuint-application/src/main/java/com/fuint/common/service/CommissionRelationService.java

@@ -0,0 +1,34 @@
+package com.fuint.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fuint.framework.pagination.PaginationRequest;
+import com.fuint.framework.pagination.PaginationResponse;
+import com.fuint.framework.exception.BusinessCheckException;
+import com.fuint.repository.model.MtCommissionRelation;
+
+/**
+ * 分销提成关系业务接口
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+public interface CommissionRelationService extends IService<MtCommissionRelation> {
+
+    /**
+     * 分页查询分佣关系列表
+     *
+     * @param paginationRequest
+     * @return
+     */
+    PaginationResponse<MtCommissionRelation> queryRelationByPagination(PaginationRequest paginationRequest) throws BusinessCheckException;
+
+    /**
+     * 设置分销提成关系
+     *
+     * @param  userId 会员ID
+     * @param  shareId 分享者ID
+     * @throws BusinessCheckException
+     * @retrurn
+     */
+    void setCommissionRelation(Integer userId, String shareId);
+}

+ 5 - 3
fuint-application/src/main/java/com/fuint/common/service/MemberService.java

@@ -51,11 +51,12 @@ public interface MemberService extends IService<MtUser> {
     /**
      * 添加会员
      *
-     * @param  reqUserDto
+     * @param  memberInfo 会员信息
+     * @param  shareId 分享用户ID
      * @throws BusinessCheckException
      * @return
      */
-    MtUser addMember(MtUser reqUserDto) throws BusinessCheckException;
+    MtUser addMember(MtUser memberInfo, String shareId) throws BusinessCheckException;
 
     /**
      * 编辑会员
@@ -72,10 +73,11 @@ public interface MemberService extends IService<MtUser> {
      *
      * @param  merchantId 商户ID
      * @param  mobile 手机号
+     * @param  shareId 分享用户ID
      * @throws BusinessCheckException
      * @return
      */
-    MtUser addMemberByMobile(Integer merchantId, String mobile) throws BusinessCheckException;
+    MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId) throws BusinessCheckException;
 
     /**
      * 根据会员ID获取会员信息

+ 91 - 0
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionRelationServiceImpl.java

@@ -0,0 +1,91 @@
+package com.fuint.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fuint.common.service.CommissionRelationService;
+import com.fuint.framework.exception.BusinessCheckException;
+import com.fuint.framework.pagination.PaginationRequest;
+import com.fuint.framework.pagination.PaginationResponse;
+import com.fuint.repository.mapper.MtCommissionRelationMapper;
+import com.fuint.common.enums.StatusEnum;
+import com.fuint.repository.model.MtCommissionRelation;
+import com.github.pagehelper.PageHelper;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.github.pagehelper.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+import java.util.*;
+
+/**
+ * 分销提成关系服务接口
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Service
+@AllArgsConstructor
+public class CommissionRelationServiceImpl extends ServiceImpl<MtCommissionRelationMapper, MtCommissionRelation> implements CommissionRelationService {
+
+    private static final Logger logger = LoggerFactory.getLogger(CommissionRelationServiceImpl.class);
+
+    private MtCommissionRelationMapper mtCommissionRelationMapper;
+
+    /**
+     * 分页查询关系列表
+     *
+     * @param paginationRequest
+     * @return
+     */
+    @Override
+    public PaginationResponse<MtCommissionRelation> queryRelationByPagination(PaginationRequest paginationRequest) {
+        Page<MtCommissionRelation> pageHelper = PageHelper.startPage(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
+        LambdaQueryWrapper<MtCommissionRelation> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.ne(MtCommissionRelation::getStatus, StatusEnum.DISABLE.getKey());
+        String status = paginationRequest.getSearchParams().get("status") == null ? "" : paginationRequest.getSearchParams().get("status").toString();
+        if (StringUtils.isNotBlank(status)) {
+            lambdaQueryWrapper.eq(MtCommissionRelation::getStatus, status);
+        }
+        String userId = paginationRequest.getSearchParams().get("userId") == null ? "" : paginationRequest.getSearchParams().get("userId").toString();
+        if (StringUtils.isNotBlank(userId)) {
+            lambdaQueryWrapper.eq(MtCommissionRelation::getUserId, userId);
+        }
+        String subUserId = paginationRequest.getSearchParams().get("subUserId") == null ? "" : paginationRequest.getSearchParams().get("subUserId").toString();
+        if (StringUtils.isNotBlank(subUserId)) {
+            lambdaQueryWrapper.eq(MtCommissionRelation::getSubUserId, subUserId);
+        }
+        String merchantId = paginationRequest.getSearchParams().get("merchantId") == null ? "" : paginationRequest.getSearchParams().get("merchantId").toString();
+        if (StringUtils.isNotBlank(merchantId)) {
+            lambdaQueryWrapper.eq(MtCommissionRelation::getMerchantId, merchantId);
+        }
+
+        lambdaQueryWrapper.orderByDesc(MtCommissionRelation::getId);
+        List<MtCommissionRelation> dataList = mtCommissionRelationMapper.selectList(lambdaQueryWrapper);
+
+        PageRequest pageRequest = PageRequest.of(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
+        PageImpl pageImpl = new PageImpl(dataList, pageRequest, pageHelper.getTotal());
+        PaginationResponse<MtCommissionRelation> paginationResponse = new PaginationResponse(pageImpl, MtCommissionRelation.class);
+        paginationResponse.setTotalPages(pageHelper.getPages());
+        paginationResponse.setTotalElements(pageHelper.getTotal());
+        paginationResponse.setContent(dataList);
+
+        return paginationResponse;
+    }
+
+    /**
+     * 设置分销提成关系
+     *
+     * @param userId  会员ID
+     * @param shareId 分享者ID
+     * @throws BusinessCheckException
+     * @retrurn
+     */
+    @Override
+    public void setCommissionRelation(Integer userId, String shareId) {
+        return;
+    }
+}

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/CouponGroupServiceImpl.java

@@ -383,7 +383,7 @@ public class CouponGroupServiceImpl extends ServiceImpl<MtCouponGroupMapper, MtC
         for (CouponCellDto dto : rows) {
             MtUser userInfo = memberService.queryMemberByMobile(dto.getMerchantId(), dto.getMobile());
             if (userInfo == null) {
-                userInfo = memberService.addMemberByMobile(dto.getMerchantId(), dto.getMobile());
+                userInfo = memberService.addMemberByMobile(dto.getMerchantId(), dto.getMobile(), "0");
             }
 
             if (null == userInfo || !userInfo.getStatus().equals(StatusEnum.ENABLED.getKey())) {

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/GiveServiceImpl.java

@@ -180,7 +180,7 @@ public class GiveServiceImpl extends ServiceImpl<MtGiveMapper, MtGive> implement
             userInfo.setGradeId(grade.getId()+"");
             userInfo.setBalance(new BigDecimal(0));
             userInfo.setStatus(StatusEnum.ENABLED.getKey());
-            user = memberService.addMember(userInfo);
+            user = memberService.addMember(userInfo, "0");
         } else {
             if (!user.getStatus().equals(StatusEnum.ENABLED.getKey())) {
                 throw new BusinessCheckException("转增对象可能已被禁用");

+ 21 - 2
fuint-application/src/main/java/com/fuint/common/service/impl/MemberServiceImpl.java

@@ -91,6 +91,11 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
      * */
     private SettingService settingService;
 
+    /**
+     * 分佣提成关系服务接口
+     * */
+    private CommissionRelationService commissionRelationService;
+
     /**
      * 更新活跃时间
      * @param userId 会员ID
@@ -319,12 +324,13 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
      * 添加会员
      *
      * @param  mtUser 会员信息
+     * @param  shareId 分享用户ID
      * @throws BusinessCheckException
      * @return
      */
     @Override
     @OperationServiceLog(description = "新增会员信息")
-    public MtUser addMember(MtUser mtUser) throws BusinessCheckException {
+    public MtUser addMember(MtUser mtUser, String shareId) throws BusinessCheckException {
         // 手机号已存在
         if (StringUtil.isNotEmpty(mtUser.getMobile())) {
             MtUser userInfo = queryMemberByMobile(mtUser.getMerchantId(), mtUser.getMobile());
@@ -394,6 +400,9 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
         // 开卡赠礼
         openGiftService.openGift(mtUser.getId(), Integer.parseInt(mtUser.getGradeId()), true);
 
+        // 分佣关系
+        commissionRelationService.setCommissionRelation(mtUser.getId(), shareId);
+
         // 新增用户发短信通知
         if (mtUser.getId() > 0 && mtUser.getStatus().equals(StatusEnum.ENABLED.getKey())) {
             // 发送短信
@@ -470,14 +479,16 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
     /**
      * 通过手机号新增会员
      *
+     * @param merchantId 商户ID
      * @param  mobile 手机号
+     * @param  shareId 分享用户ID
      * @throws BusinessCheckException
      * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "通过手机号新增会员")
-    public MtUser addMemberByMobile(Integer merchantId, String mobile) throws BusinessCheckException {
+    public MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId) throws BusinessCheckException {
         MtUser mtUser = new MtUser();
         mtUser.setUserNo(CommonUtil.createUserNo());
         String nickName = mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
@@ -503,6 +514,10 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
 
         // 开卡赠礼
         openGiftService.openGift(mtUser.getId(), Integer.parseInt(mtUser.getGradeId()), true);
+
+        // 分佣关系
+        commissionRelationService.setCommissionRelation(mtUser.getId(), shareId);
+
         return mtUser;
     }
 
@@ -633,6 +648,7 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
         String storeId = StringUtil.isNotEmpty(userInfo.getString("storeId")) ? userInfo.getString("storeId") : "0";
         String nickName = StringUtil.isNotEmpty(userInfo.getString("nickName")) ? userInfo.getString("nickName") : "";
         String mobile = StringUtil.isNotEmpty(userInfo.getString("phone")) ? userInfo.getString("phone") : "";
+        String shareId = StringUtil.isNotEmpty(userInfo.getString("shareId")) ? userInfo.getString("shareId") : "0";
         String source = StringUtil.isNotEmpty(userInfo.getString("source")) ? userInfo.getString("source") : MemberSourceEnum.WECHAT_LOGIN.getKey();
 
         // 需要手机号登录
@@ -718,6 +734,9 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
 
             // 开卡赠礼
             openGiftService.openGift(user.getId(), Integer.parseInt(user.getGradeId()), true);
+
+            // 分佣关系
+            commissionRelationService.setCommissionRelation(mtUser.getId(), shareId);
         } else {
             // 已被禁用
             if (user.getStatus().equals(StatusEnum.DISABLE.getKey())) {

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java

@@ -703,7 +703,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
                 userInfo = memberService.queryMemberByMobile(merchantId, mobile);
                 // 自动注册会员
                 if (userInfo == null) {
-                    userInfo = memberService.addMemberByMobile(merchantId, mobile);
+                    userInfo = memberService.addMemberByMobile(merchantId, mobile, "0");
                 }
             }
         }

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/PointServiceImpl.java

@@ -224,7 +224,7 @@ public class PointServiceImpl extends ServiceImpl<MtPointMapper, MtPoint> implem
         MtUser fUserInfo = memberService.queryMemberByMobile(userInfo.getMerchantId(), mobile);
         // 自动注册会员
         if (fUserInfo == null) {
-            fUserInfo = memberService.addMemberByMobile(userInfo.getMerchantId(), mobile);
+            fUserInfo = memberService.addMemberByMobile(userInfo.getMerchantId(), mobile, userId.toString());
         }
 
         if (fUserInfo == null) {

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/StaffServiceImpl.java

@@ -155,7 +155,7 @@ public class StaffServiceImpl extends ServiceImpl<MtStaffMapper, MtStaff> implem
             userInfo.setMerchantId(mtStaff.getMerchantId());
             userInfo.setIsStaff(YesOrNoEnum.YES.getKey());
             userInfo.setOperator(operator);
-            mtUser = memberService.addMember(userInfo);
+            mtUser = memberService.addMember(userInfo, "0");
             if (mtUser != null) {
                 mtStaff.setUserId(mtUser.getId());
             } else {

+ 1 - 1
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendMemberController.java

@@ -312,7 +312,7 @@ public class BackendMemberController extends BaseController {
             memberInfo.setStoreId(myStoreId);
         }
         if (StringUtil.isEmpty(id)) {
-            memberService.addMember(memberInfo);
+            memberService.addMember(memberInfo, "0");
         } else {
             memberService.updateMember(memberInfo, false);
         }

+ 8 - 3
fuint-application/src/main/java/com/fuint/module/clientApi/controller/ClientSignController.java

@@ -87,11 +87,13 @@ public class ClientSignController extends BaseController {
     public ResponseObject mpWxLogin(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
         String storeId = request.getHeader("storeId") == null ? "0" : request.getHeader("storeId");
         String merchantNo = request.getHeader("merchantNo") == null ? "" : request.getHeader("merchantNo");
+        String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         JSONObject paramsObj = new JSONObject(param);
         logger.info("微信授权登录参数:{}", param);
         Integer merchantId = merchantService.getMerchantId(merchantNo);
         JSONObject userInfo = paramsObj.getJSONObject("userInfo");
         JSONObject loginInfo = weixinService.getWxProfile(merchantId, param.get("code").toString());
+        loginInfo.put("shareId", shareId);
         if (loginInfo == null) {
             return getFailureResult(0, "微信登录失败");
         }
@@ -143,7 +145,7 @@ public class ClientSignController extends BaseController {
     public ResponseObject mpWxAuth(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
         String merchantNo = request.getHeader("merchantNo") == null ? "" : request.getHeader("merchantNo");
         String storeId = request.getHeader("storeId") == null ? "0" : request.getHeader("storeId");
-
+        String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         Integer merchantId = merchantService.getMerchantId(merchantNo);
         JSONObject userInfo = weixinService.getWxOpenId(merchantId, param.get("code").toString());
         if (userInfo == null) {
@@ -151,6 +153,7 @@ public class ClientSignController extends BaseController {
         }
 
         userInfo.put("storeId", storeId);
+        userInfo.put("shareId", shareId);
         MtUser mtUser = memberService.queryMemberByOpenId(merchantId, userInfo.get("openid").toString(), userInfo);
         if (mtUser == null) {
             return getFailureResult(201, "微信公众号授权失败");
@@ -184,6 +187,7 @@ public class ClientSignController extends BaseController {
         String password = param.get("password").toString();
         String captchaCode = param.get("captchaCode") == null ? "" : param.get("captchaCode").toString();
         String uuid = param.get("uuid") == null ? "" : param.get("uuid").toString();
+        String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         Integer storeId = request.getHeader("storeId") == null ? 0 : Integer.parseInt(request.getHeader("storeId"));
         String userAgent = request.getHeader("user-agent") == null ? "" : request.getHeader("user-agent");
 
@@ -215,7 +219,7 @@ public class ClientSignController extends BaseController {
         mtUser.setMobile("");
         mtUser.setDescription("会员自行注册新账号");
         mtUser.setIsStaff(YesOrNoEnum.NO.getKey());
-        MtUser userInfo = memberService.addMember(mtUser);
+        MtUser userInfo = memberService.addMember(mtUser, shareId);
 
         if (userInfo != null) {
             String token = TokenUtil.generateToken(userAgent, userInfo.getId());
@@ -260,6 +264,7 @@ public class ClientSignController extends BaseController {
         String password = param.get("password") == null ? "" : param.get("password").toString();
         String captchaCode = param.get("captchaCode") == null ? "" : param.get("captchaCode").toString();
         String uuid = param.get("uuid") == null ? "" : param.get("uuid").toString();
+        String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         TokenDto dto = new TokenDto();
         MtUser mtUser = null;
         Integer merchantId = merchantService.getMerchantId(merchantNo);
@@ -284,7 +289,7 @@ public class ClientSignController extends BaseController {
             // 2、写入token redis session
             if (mtVerifyCode != null) {
                 if (null == mtUser) {
-                    memberService.addMemberByMobile(merchantId, mobile);
+                    memberService.addMemberByMobile(merchantId, mobile, shareId);
                     mtUser = memberService.queryMemberByMobile(merchantId, mobile);
                 }
 

+ 3 - 0
fuint-repository/src/main/java/com/fuint/repository/model/MtCommissionRelation.java

@@ -28,6 +28,9 @@ public class MtCommissionRelation implements Serializable {
     @TableId(value = "ID", type = IdType.AUTO)
     private Integer id;
 
+    @ApiModelProperty("所属商户ID")
+    private Integer merchantId;
+
     @ApiModelProperty("会员ID")
     private Integer userId;