2 Incheckningar b6709ade5d ... e0fd73a011

Upphovsman SHA1 Meddelande Datum
  yy e0fd73a011 refactor: 提交合作伙伴部分代码 2 dagar sedan
  yy b50d2d5ad6 refactor: 提交合作伙伴部分代码 2 dagar sedan
42 ändrade filer med 1270 tillägg och 10 borttagningar
  1. 13 0
      jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
  2. 80 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/controller/PartnerCommissionController.java
  3. 81 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/entity/PartnerCommission.java
  4. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/mapper/PartnerCommissionMapper.java
  5. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/mapper/xml/PartnerCommissionMapper.xml
  6. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/service/IPartnerCommissionService.java
  7. 19 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/service/impl/PartnerCommissionServiceImpl.java
  8. 156 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/controller/PartnerCustomerController.java
  9. 92 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomer.java
  10. 71 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomerLinkman.java
  11. 69 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomerTimeline.java
  12. 71 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/dto/PartnerCustomerDTO.java
  13. 18 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerLinkmanMapper.java
  14. 17 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerMapper.java
  15. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerTimelineMapper.java
  16. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerLinkmanMapper.xml
  17. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerMapper.xml
  18. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerTimelineMapper.xml
  19. 57 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/queue/RabbitCustomer.java
  20. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerLinkmanService.java
  21. 19 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerService.java
  22. 14 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerTimelineService.java
  23. 20 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerLinkmanServiceImpl.java
  24. 77 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerServiceImpl.java
  25. 20 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerTimelineServiceImpl.java
  26. 65 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/entity/PartnerRule.java
  27. 61 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/entity/PartnerRuleClew.java
  28. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/PartnerRuleClewMapper.java
  29. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/PartnerRuleMapper.java
  30. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/xml/PartnerRuleClewMapper.xml
  31. 5 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/xml/PartnerRuleMapper.xml
  32. 15 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/IPartnerRuleClewService.java
  33. 16 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/IPartnerRuleService.java
  34. 19 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/impl/PartnerRuleClewServiceImpl.java
  35. 30 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/impl/PartnerRuleServiceImpl.java
  36. 7 1
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/controller/PartnerUserController.java
  37. 6 1
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/PartnerUser.java
  38. 11 3
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/dto/UserInfoDTO.java
  39. 10 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/vo/UserInfoVO.java
  40. 2 0
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/service/IPartnerUserService.java
  41. 13 4
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/service/impl/PartnerUserServiceImpl.java
  42. 1 1
      jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/util/partnerUserHolder.java

+ 13 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java

@@ -1,12 +1,15 @@
 package org.jeecg.config.shiro.filters;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authc.AuthenticationToken;
 import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.config.shiro.JwtToken;
+import org.jeecg.config.shiro.PartnerToken;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -15,6 +18,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Optional;
 
 /**
  * @Description: 鉴权登录拦截器
@@ -69,6 +73,15 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
         }
         // update-end--Author:lvdandan Date:20210105 for:JT-355 OA聊天添加token验证,获取token参数
 
+        String contextPath = Optional.ofNullable(((HttpServletRequest) request).getContextPath()).orElse("");
+        String uri = Optional.ofNullable(((HttpServletRequest) request).getRequestURI()).orElse("");
+        String apiPath = uri.substring(contextPath.length() - (contextPath.endsWith("/") ? 1 : 0));
+        AuthenticationToken authenticationToken;
+        if (StrUtil.startWithIgnoreCase(apiPath, "/partner/")) {
+            authenticationToken = new PartnerToken(token);
+        }  else {
+            authenticationToken = new JwtToken(token);
+        }
         JwtToken jwtToken = new JwtToken(token);
         // 提交给realm进行登入,如果错误他会抛出异常并被捕获
         getSubject(request, response).login(jwtToken);

+ 80 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/controller/PartnerCommissionController.java

@@ -0,0 +1,80 @@
+package org.jeecg.modules.shop.commission.controller;
+
+
+import javax.servlet.http.HttpServletRequest;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+
+import org.jeecg.modules.shop.commission.entity.PartnerCommission;
+import org.jeecg.modules.shop.commission.service.IPartnerCommissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+
+ /**
+ * @Description: 合作伙伴佣金
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+@Api(tags="合作伙伴佣金")
+@RestController
+@RequestMapping("/partnercustomer4/partnerCommission")
+@Slf4j
+public class PartnerCommissionController extends JeecgController<PartnerCommission, IPartnerCommissionService> {
+	@Autowired
+	private IPartnerCommissionService partnerCommissionService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param partnerCommission
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "合作伙伴佣金-分页列表查询")
+	@ApiOperation(value="合作伙伴佣金-分页列表查询", notes="合作伙伴佣金-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PartnerCommission>> queryPageList(PartnerCommission partnerCommission,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PartnerCommission> queryWrapper = QueryGenerator.initQueryWrapper(partnerCommission, req.getParameterMap());
+		Page<PartnerCommission> page = new Page<PartnerCommission>(pageNo, pageSize);
+		IPage<PartnerCommission> pageList = partnerCommissionService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "合作伙伴佣金-通过id查询")
+	@ApiOperation(value="合作伙伴佣金-通过id查询", notes="合作伙伴佣金-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PartnerCommission> queryById(@RequestParam(name="id",required=true) String id) {
+		PartnerCommission partnerCommission = partnerCommissionService.getById(id);
+		if(partnerCommission==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(partnerCommission);
+	}
+
+
+
+}

+ 81 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/entity/PartnerCommission.java

@@ -0,0 +1,81 @@
+package org.jeecg.modules.shop.commission.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 合作伙伴佣金
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_commission")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_commission对象", description="合作伙伴佣金")
+public class PartnerCommission implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**编号*/
+
+    @ApiModelProperty(value = "编号")
+    private String billNo;
+	/**合作伙伴id*/
+
+    @ApiModelProperty(value = "合作伙伴id")
+    private String userId;
+	/**线索Id/订单Id*/
+
+    @ApiModelProperty(value = "线索Id/订单Id")
+    private String coId;
+	/**佣金类型 0线索 1订单*/
+
+    @ApiModelProperty(value = "佣金类型 0线索 1订单")
+    private Integer type;
+	/**0PayPal 1bank*/
+
+    @ApiModelProperty(value = "0PayPal 1bank")
+    private Integer payType;
+	/**0未发放 1已发放*/
+
+    @ApiModelProperty(value = "0未发放 1已发放")
+    private Integer state;
+	/**金额*/
+
+    @ApiModelProperty(value = "金额")
+    private BigDecimal monney;
+}

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/mapper/PartnerCommissionMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.commission.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.commission.entity.PartnerCommission;
+
+/**
+ * @Description: 合作伙伴佣金
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+public interface PartnerCommissionMapper extends BaseMapper<PartnerCommission> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/mapper/xml/PartnerCommissionMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.commission.mapper.PartnerCommissionMapper">
+
+</mapper>

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/service/IPartnerCommissionService.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.commission.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.commission.entity.PartnerCommission;
+
+/**
+ * @Description: 合作伙伴佣金
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+public interface IPartnerCommissionService extends IService<PartnerCommission> {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/commission/service/impl/PartnerCommissionServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.shop.commission.service.impl;
+
+import org.jeecg.modules.shop.commission.entity.PartnerCommission;
+import org.jeecg.modules.shop.commission.mapper.PartnerCommissionMapper;
+import org.jeecg.modules.shop.commission.service.IPartnerCommissionService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 合作伙伴佣金
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+@Service
+public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionMapper, PartnerCommission> implements IPartnerCommissionService {
+
+}

+ 156 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/controller/PartnerCustomerController.java

@@ -0,0 +1,156 @@
+package org.jeecg.modules.shop.customer.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.bean.BeanUtil;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+
+import org.jeecg.config.shiro.IgnoreAuth;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomer;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+import org.jeecg.modules.shop.customer.entity.dto.PartnerCustomerDTO;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerLinkmanService;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerService;
+import org.springframework.beans.factory.BeanClassLoaderAware;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Api(tags="[合作伙伴-客户]客户接口")
+@RestController
+@RequestMapping("/partner/partnerCustomer")
+@Slf4j
+public class PartnerCustomerController extends JeecgController<PartnerCustomer, IPartnerCustomerService> {
+	@Autowired
+	private IPartnerCustomerService partnerCustomerService;
+
+	 @Autowired
+	 private IPartnerCustomerLinkmanService linkmanService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param partnerCustomer
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+//	TODO 客户列表的佣金情况
+	@ApiOperation(value="partner_customer-分页列表查询", notes="partner_customer-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PartnerCustomer>> queryPageList(PartnerCustomer partnerCustomer,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PartnerCustomer> queryWrapper = QueryGenerator.initQueryWrapper(partnerCustomer, req.getParameterMap());
+		Page<PartnerCustomer> page = new Page<PartnerCustomer>(pageNo, pageSize);
+		IPage<PartnerCustomer> pageList = partnerCustomerService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param partnerCustomer
+	 * @return
+	 */
+	@AutoLog(value = "partner_customer-添加")
+	@ApiOperation(value="partner_customer-添加", notes="partner_customer-添加")
+	@RequiresPermissions("partnercustomer:partner_customer:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PartnerCustomerDTO partnerCustomer) {
+		partnerCustomerService.addCustomer(partnerCustomer);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "partner_customer-编辑")
+	@ApiOperation(value="partner_customer-编辑", notes="partner_customer-编辑")
+	@RequiresPermissions("partnercustomer:partner_customer:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PartnerCustomerDTO dto) {
+		partnerCustomerService.updatecustomer(dto);
+		return Result.OK("编辑成功!");
+	}
+	
+//	/**
+//	 *   通过id删除
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@AutoLog(value = "partner_customer-通过id删除")
+//	@ApiOperation(value="partner_customer-通过id删除", notes="partner_customer-通过id删除")
+//	@RequiresPermissions("partnercustomer:partner_customer:delete")
+//	@DeleteMapping(value = "/delete")
+//	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+//		partnerCustomerService.removeById(id);
+//		return Result.OK("删除成功!");
+//	}
+	
+//	/**
+//	 *  批量删除
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@AutoLog(value = "partner_customer-批量删除")
+//	@ApiOperation(value="partner_customer-批量删除", notes="partner_customer-批量删除")
+//	@RequiresPermissions("partnercustomer:partner_customer:deleteBatch")
+//	@DeleteMapping(value = "/deleteBatch")
+//	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+//		this.partnerCustomerService.removeByIds(Arrays.asList(ids.split(",")));
+//		return Result.OK("批量删除成功!");
+//	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+//	TODO 佣金详情
+	@ApiOperation(value="partner_customer-通过id查询", notes="partner_customer-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PartnerCustomerDTO> queryById(@RequestParam(name="id",required=true) String id) {
+		PartnerCustomer partnerCustomer = partnerCustomerService.getById(id);
+		if(partnerCustomer==null) {
+			return Result.error("未找到对应数据");
+		}
+		PartnerCustomerDTO dto = new PartnerCustomerDTO();
+		BeanUtil.copyProperties(partnerCustomer, dto);
+		dto.setLinkmanList(linkmanService.list(new QueryWrapper<PartnerCustomerLinkman>().eq("customer_id", id)));
+		return Result.OK(dto);
+	}
+}

+ 92 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomer.java

@@ -0,0 +1,92 @@
+package org.jeecg.modules.shop.customer.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_customer")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_customer对象", description="partner_customer")
+public class PartnerCustomer implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "合作伙伴id")
+    private String userId;
+	/**编号*/
+    @ApiModelProperty(value = "编号")
+    private String billNo;
+	/**姓名*/
+    @ApiModelProperty(value = "姓名")
+    private String name;
+	/**客户类型*/
+    @ApiModelProperty(value = "客户类型")
+    private String type;
+	/**来源渠道*/
+    @ApiModelProperty(value = "来源渠道")
+    private String sourceChannel;
+	/**国家*/
+    @ApiModelProperty(value = "国家")
+    private String country;
+	/**业务类型*/
+    @ApiModelProperty(value = "业务类型")
+    private String businessType;
+	/**公司名*/
+    @ApiModelProperty(value = "公司名")
+    private String companyName;
+	/**公司网址*/
+    @ApiModelProperty(value = "公司网址")
+    private String companyWebsite;
+	/**公司规模*/
+    @ApiModelProperty(value = "公司规模")
+    private String companySize;
+	/**采购预算*/
+    @ApiModelProperty(value = "采购预算")
+    private String budget;
+	/**需求*/
+    @ApiModelProperty(value = "需求")
+    private String demand;
+	/**备注*/
+    @ApiModelProperty(value = "备注")
+    private String remark;
+}

+ 71 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomerLinkman.java

@@ -0,0 +1,71 @@
+package org.jeecg.modules.shop.customer.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: partner_customer_linkman
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_customer_linkman")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_customer_linkman对象", description="partner_customer_linkman")
+public class PartnerCustomerLinkman implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**客户id*/
+    @ApiModelProperty(value = "客户id")
+    private String customerId;
+	/**姓*/
+    @ApiModelProperty(value = "姓")
+    private String firstName;
+	/**名*/
+    @ApiModelProperty(value = "名")
+    private String lastName;
+	/**邮箱*/
+    @ApiModelProperty(value = "邮箱")
+    private String email;
+	/**手机区号*/
+    @ApiModelProperty(value = "手机区号")
+    private String areaCode;
+	/**手机号*/
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+}

+ 69 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/PartnerCustomerTimeline.java

@@ -0,0 +1,69 @@
+package org.jeecg.modules.shop.customer.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 客户返佣时效
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_customer_timeline")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_customer_timeline对象", description="客户返佣时效")
+public class PartnerCustomerTimeline implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**客户id*/
+    @ApiModelProperty(value = "客户id")
+    private String customerId;
+	/**合作伙伴id*/
+    @ApiModelProperty(value = "合作伙伴id")
+    private String userId;
+
+    @ApiModelProperty(value = "合作伙伴当时角色code")
+    private String ruleCode;
+	/**返佣失效时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "返佣失效时间")
+    private Date timeline;
+}

+ 71 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/entity/dto/PartnerCustomerDTO.java

@@ -0,0 +1,71 @@
+package org.jeecg.modules.shop.customer.entity.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="", description="")
+public class PartnerCustomerDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**姓名*/
+    @ApiModelProperty(value = "姓名")
+    private String name;
+	/**客户类型*/
+    @ApiModelProperty(value = "客户类型")
+    private String type;
+	/**来源渠道*/
+    @ApiModelProperty(value = "来源渠道")
+    private String sourceChannel;
+	/**国家*/
+    @ApiModelProperty(value = "国家")
+    private String country;
+	/**业务类型*/
+    @ApiModelProperty(value = "业务类型")
+    private String businessType;
+	/**公司名*/
+    @ApiModelProperty(value = "公司名")
+    private String companyName;
+	/**公司网址*/
+    @ApiModelProperty(value = "公司网址")
+    private String companyWebsite;
+	/**公司规模*/
+    @ApiModelProperty(value = "公司规模")
+    private String companySize;
+	/**采购预算*/
+    @ApiModelProperty(value = "采购预算")
+    private String budget;
+	/**需求*/
+    @ApiModelProperty(value = "需求")
+    private String demand;
+	/**备注*/
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "客户联系人")
+    private List<PartnerCustomerLinkman> linkmanList;
+}

+ 18 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerLinkmanMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.shop.customer.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+
+import java.util.List;
+
+
+
+/**
+ * @Description: partner_customer_linkman
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+public interface PartnerCustomerLinkmanMapper extends BaseMapper<PartnerCustomerLinkman> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.shop.customer.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomer;
+
+import java.util.List;
+
+
+/**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+public interface PartnerCustomerMapper extends BaseMapper<PartnerCustomer> {
+
+}

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/PartnerCustomerTimelineMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.customer.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerTimeline;
+
+/**
+ * @Description: 客户返佣时效
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+public interface PartnerCustomerTimelineMapper extends BaseMapper<PartnerCustomerTimeline> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerLinkmanMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.customer.mapper.PartnerCustomerLinkmanMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.customer.mapper.PartnerCustomerMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/mapper/xml/PartnerCustomerTimelineMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.customer.mapper.PartnerCustomerTimelineMapper">
+
+</mapper>

+ 57 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/queue/RabbitCustomer.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.shop.customer.queue;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.context.annotation.Bean;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.core.Binding;
+import org.springframework.context.annotation.Configuration;
+
+@Slf4j
+@Configuration
+public class RabbitCustomer {
+
+    public static final String ADDCUSTOMER_EXCHANGE = "customerExchange";
+
+    public static final String ADDCUSTOMER_ROUTE = "customerKey";
+
+    public static final String ADDCUSTOMER_QUEUE = "customerQueue";
+
+    public static final String UPDATECUSTOMER_EXCHANGE = "customerExchange";
+
+    public static final String UPDATECUSTOMER_ROUTE = "customerKey";
+
+    public static final String UPDATECUSTOMER_QUEUE = "customerQueue";
+
+    @Bean
+    public DirectExchange exchange(){
+        return new DirectExchange(ADDCUSTOMER_EXCHANGE);
+    }
+
+    @Bean
+    public DirectExchange updateExchange(){
+        return new DirectExchange(UPDATECUSTOMER_EXCHANGE);
+    }
+
+
+    @Bean
+    public Queue queue(){
+        return new Queue(ADDCUSTOMER_QUEUE);
+    }
+
+    @Bean
+    public Queue updateQueue(){
+        return new Queue(UPDATECUSTOMER_QUEUE);
+    }
+
+    @Bean
+    public Binding binding(DirectExchange exchange, Queue queue){
+        return BindingBuilder.bind(queue).to(exchange).with(ADDCUSTOMER_ROUTE);
+    }
+
+    @Bean
+    public Binding updateBinding(DirectExchange exchange, Queue updateQueue){
+        return BindingBuilder.bind(updateQueue).to(exchange).with(UPDATECUSTOMER_ROUTE);
+    }
+}

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerLinkmanService.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.customer.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+
+/**
+ * @Description: partner_customer_linkman
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+public interface IPartnerCustomerLinkmanService extends IService<PartnerCustomerLinkman> {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerService.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.shop.customer.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomer;
+import org.jeecg.modules.shop.customer.entity.dto.PartnerCustomerDTO;
+
+/**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+public interface IPartnerCustomerService extends IService<PartnerCustomer> {
+
+    void addCustomer(PartnerCustomerDTO partnerCustomer);
+
+    void updatecustomer(PartnerCustomerDTO dto);
+}

+ 14 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/IPartnerCustomerTimelineService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.shop.customer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerTimeline;
+
+/**
+ * @Description: 客户返佣时效
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+public interface IPartnerCustomerTimelineService extends IService<PartnerCustomerTimeline> {
+
+}

+ 20 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerLinkmanServiceImpl.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.shop.customer.service.impl;
+
+
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+import org.jeecg.modules.shop.customer.mapper.PartnerCustomerLinkmanMapper;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerLinkmanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: partner_customer_linkman
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Service
+public class PartnerCustomerLinkmanServiceImpl extends ServiceImpl<PartnerCustomerLinkmanMapper, PartnerCustomerLinkman> implements IPartnerCustomerLinkmanService {
+
+}

+ 77 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerServiceImpl.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.shop.customer.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import org.jeecg.modules.sequence.service.IMiddleSequenceService;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomer;
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerLinkman;
+import org.jeecg.modules.shop.customer.entity.dto.PartnerCustomerDTO;
+import org.jeecg.modules.shop.customer.mapper.PartnerCustomerMapper;
+import org.jeecg.modules.shop.customer.queue.RabbitCustomer;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerLinkmanService;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerService;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerTimelineService;
+import org.jeecg.modules.shop.user.util.partnerUserHolder;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.mail.Part;
+
+/**
+ * @Description: partner_customer
+ * @Author: jeecg-boot
+ * @Date:   2025-07-11
+ * @Version: V1.0
+ */
+@Service
+public class PartnerCustomerServiceImpl extends ServiceImpl<PartnerCustomerMapper, PartnerCustomer> implements IPartnerCustomerService {
+
+    @Autowired
+    private  IPartnerCustomerLinkmanService linkmanService;
+
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+
+    @Autowired
+    private  IMiddleSequenceService middleSequenceService;
+
+    @Override
+    @Transactional
+    public void addCustomer(PartnerCustomerDTO dto) {
+        PartnerCustomer cu = BeanUtil.copyProperties(dto, PartnerCustomer.class);
+        cu.setId(String.valueOf(IdWorker.getId()));
+        cu.setUserId(partnerUserHolder.currentLoginUserId());
+        cu.setBillNo(middleSequenceService.generate("PCU",6));
+        this.save( cu);
+        if (CollectionUtil.isNotEmpty(dto.getLinkmanList())){
+            dto.getLinkmanList().forEach(linkman -> {
+                linkman.setId(String.valueOf(IdWorker.getId()));
+            });
+            linkmanService.saveBatch(dto.getLinkmanList());
+        }
+        //mq 发送消息把dto推到中台去
+        rabbitTemplate.convertAndSend(RabbitCustomer.ADDCUSTOMER_EXCHANGE, RabbitCustomer.ADDCUSTOMER_ROUTE, JSONUtil.toJsonStr(dto));
+    }
+
+    @Override
+    public void updatecustomer(PartnerCustomerDTO dto) {
+        linkmanService.remove(new QueryWrapper<PartnerCustomerLinkman>().eq("customer_id", dto.getId()));
+        PartnerCustomer cu = this.getById(dto.getId());
+        BeanUtil.copyProperties(dto, cu);
+        this.updateById(cu);
+        linkmanService.saveOrUpdateBatch(dto.getLinkmanList());
+        PartnerCustomerDTO d2 = BeanUtil.copyProperties(cu, PartnerCustomerDTO.class);
+        d2.setLinkmanList(dto.getLinkmanList());
+        rabbitTemplate.convertAndSend(RabbitCustomer.UPDATECUSTOMER_EXCHANGE, RabbitCustomer.UPDATECUSTOMER_ROUTE, JSONUtil.toJsonStr(d2));
+    }
+
+}

+ 20 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/customer/service/impl/PartnerCustomerTimelineServiceImpl.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.shop.customer.service.impl;
+
+
+import org.jeecg.modules.shop.customer.entity.PartnerCustomerTimeline;
+import org.jeecg.modules.shop.customer.mapper.PartnerCustomerTimelineMapper;
+import org.jeecg.modules.shop.customer.service.IPartnerCustomerTimelineService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 客户返佣时效
+ * @Author: jeecg-boot
+ * @Date:   2025-07-15
+ * @Version: V1.0
+ */
+@Service
+public class PartnerCustomerTimelineServiceImpl extends ServiceImpl<PartnerCustomerTimelineMapper, PartnerCustomerTimeline> implements IPartnerCustomerTimelineService {
+
+}

+ 65 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/entity/PartnerRule.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.shop.rule.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: 合作伙伴角色
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_rule")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_rule对象", description="合作伙伴角色")
+public class PartnerRule implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**编号*/
+    @ApiModelProperty(value = "编号")
+    private String billNo;
+	/**订单金额百分比*/
+    @ApiModelProperty(value = "订单金额百分比")
+    private BigDecimal rate;
+	/**订单佣金有限期字典code*/
+    @ApiModelProperty(value = "订单佣金有限期字典code")
+    private String commissionTimeline;
+	/**角色名*/
+    @ApiModelProperty(value = "角色名")
+    private String name;
+}

+ 61 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/entity/PartnerRuleClew.java

@@ -0,0 +1,61 @@
+package org.jeecg.modules.shop.rule.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: 合照伙伴角色线索佣金配置方案
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Data
+@TableName("partner_rule_clew")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="partner_rule_clew对象", description="合照伙伴角色线索佣金配置方案")
+public class PartnerRuleClew implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**方案id*/
+    @ApiModelProperty(value = "方案id")
+    private String ruleId;
+	/**线索等级*/
+    @ApiModelProperty(value = "线索等级")
+    private String clewRank;
+	/**线索佣金*/
+    @ApiModelProperty(value = "线索佣金")
+    private BigDecimal money;
+}

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/PartnerRuleClewMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.rule.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.rule.entity.PartnerRuleClew;
+
+/**
+ * @Description: 合照伙伴角色线索佣金配置方案
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface PartnerRuleClewMapper extends BaseMapper<PartnerRuleClew> {
+
+}

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/PartnerRuleMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.rule.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.shop.rule.entity.PartnerRule;
+
+/**
+ * @Description: 合作伙伴角色
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface PartnerRuleMapper extends BaseMapper<PartnerRule> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/xml/PartnerRuleClewMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.rule.mapper.PartnerRuleClewMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/mapper/xml/PartnerRuleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.shop.rule.mapper.PartnerRuleMapper">
+
+</mapper>

+ 15 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/IPartnerRuleClewService.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.shop.rule.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.rule.entity.PartnerRuleClew;
+
+/**
+ * @Description: 合照伙伴角色线索佣金配置方案
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface IPartnerRuleClewService extends IService<PartnerRuleClew> {
+
+}

+ 16 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/IPartnerRuleService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.shop.rule.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.shop.rule.entity.PartnerRule;
+
+/**
+ * @Description: 合作伙伴角色
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface IPartnerRuleService extends IService<PartnerRule> {
+
+
+}

+ 19 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/impl/PartnerRuleClewServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.shop.rule.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.shop.rule.entity.PartnerRuleClew;
+import org.jeecg.modules.shop.rule.mapper.PartnerRuleClewMapper;
+import org.jeecg.modules.shop.rule.service.IPartnerRuleClewService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 合照伙伴角色线索佣金配置方案
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Service
+public class PartnerRuleClewServiceImpl extends ServiceImpl<PartnerRuleClewMapper, PartnerRuleClew> implements IPartnerRuleClewService {
+
+}

+ 30 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/rule/service/impl/PartnerRuleServiceImpl.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.shop.rule.service.impl;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.sequence.service.IMiddleSequenceService;
+
+
+import org.jeecg.modules.shop.rule.entity.PartnerRule;
+import org.jeecg.modules.shop.rule.entity.PartnerRuleClew;
+import org.jeecg.modules.shop.rule.mapper.PartnerRuleMapper;
+import org.jeecg.modules.shop.rule.service.IPartnerRuleClewService;
+import org.jeecg.modules.shop.rule.service.IPartnerRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+
+/**
+ * @Description: 合作伙伴角色
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Service
+public class PartnerRuleServiceImpl extends ServiceImpl<PartnerRuleMapper, PartnerRule> implements IPartnerRuleService {
+
+
+}

+ 7 - 1
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/controller/PartnerUserController.java

@@ -53,7 +53,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  */
 @Api(tags="[合作伙伴前台]-合作伙伴前台用户接口")
 @RestController
-@RequestMapping("/client/partnerUser")
+@RequestMapping("/partner/partnerUser")
 @Slf4j
 public class PartnerUserController extends JeecgController<PartnerUser, IPartnerUserService> {
 	@Autowired
@@ -88,4 +88,10 @@ public class PartnerUserController extends JeecgController<PartnerUser, IPartner
 		 partnerUserService.updateUserInfo(dto);
 		 return Result.OK();
 	 }
+	 @ApiOperation(value = "完善信息", notes = "完善信息")
+	 @PostMapping(value = "/submitInfo")
+	 public Result<?> submitInfo(@RequestBody @Valid UserInfoDTO dto) {
+		 partnerUserService.submitInfo(dto);
+		 return Result.OK();
+	 }
 }

+ 6 - 1
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/PartnerUser.java

@@ -132,7 +132,7 @@ public class PartnerUser implements Serializable {
     private Date dateOfIncorporation;
 	/**Company Size类型为公司时填写*/
     @ApiModelProperty(value = "Company Size类型为公司时填写")
-    private String ompanySize;
+    private String companySize;
 	/**Business type类型为公司时填写*/
     @ApiModelProperty(value = "Business type类型为公司时填写")
     private String businessType;
@@ -164,7 +164,12 @@ public class PartnerUser implements Serializable {
     @ApiModelProperty(value = "信息是否完善0未完善 1已完善")
     private Integer infoState;
 
+    @ApiModelProperty(value = "信息完善时间")
+    private Date infoSubmitTime;
+
     @ApiModelProperty(value = "审核状态0审核中 1拒绝 2已通过")
     private Integer auditState;
 
+    @ApiModelProperty(value = "拒绝理由")
+    private String reject;
 }

+ 11 - 3
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/dto/UserInfoDTO.java

@@ -13,6 +13,9 @@ import java.util.Date;
 @Data
 public class UserInfoDTO {
 
+    /**类型 0个人 1公司*/
+    @ApiModelProperty(value = "类型 0个人 1公司")
+    private Integer type;
     /**手机区号*/
     @ApiModelProperty(value = "手机区号")
     private String areaCode;
@@ -31,14 +34,19 @@ public class UserInfoDTO {
     /**头像*/
     @ApiModelProperty(value = "头像")
     private String photo;
-    /**密码*/
-    @ApiModelProperty(value = "密码")
-    private String password;
     /**国家*/
     @ApiModelProperty(value = "国家")
     private String country;
 
+    /**申请理由*/
+    @ApiModelProperty(value = "申请理由")
+    private String applicationReason;
+    /**促进易杰发展*/
+    @ApiModelProperty(value = "促进易杰发展")
+    private String promoteBusiness;
+
     /**0paypal 1bank*/
+    @NotBlank(message = "payMethod is not null")
     @ApiModelProperty(value = "0paypal 1bank")
     private Integer payMethod;
     /**paypal email*/

+ 10 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/entity/vo/UserInfoVO.java

@@ -92,5 +92,15 @@ public class UserInfoVO {
     /**Business type类型为公司时填写*/
     @ApiModelProperty(value = "Business type类型为公司时填写")
     private String businessType;
+
+    @ApiModelProperty(value = "信息是否完善0未完善 1已完善")
+    private Integer infoState;
+
+    @ApiModelProperty(value = "审核状态0审核中 1拒绝 2已通过")
+    private Integer auditState;
+
+    /**状态0禁用1启用*/
+    @ApiModelProperty(value = "状态0禁用1启用")
+    private Integer state;
     
 }

+ 2 - 0
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/service/IPartnerUserService.java

@@ -22,4 +22,6 @@ public interface IPartnerUserService extends IService<PartnerUser> {
     UserInfoVO getUserInfo();
 
     void updateUserInfo(UserInfoDTO dto);
+
+    void submitInfo(UserInfoDTO dto);
 }

+ 13 - 4
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/service/impl/PartnerUserServiceImpl.java

@@ -18,7 +18,7 @@ import org.jeecg.modules.shop.user.entity.vo.UserInfoVO;
 import org.jeecg.modules.shop.user.entity.vo.UserLoginVO;
 import org.jeecg.modules.shop.user.mapper.PartnerUserMapper;
 import org.jeecg.modules.shop.user.service.IPartnerUserService;
-import org.jeecg.modules.shop.user.util.CustomerUserHolder;
+import org.jeecg.modules.shop.user.util.partnerUserHolder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -66,7 +66,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
             user.setState(1);
             user.setLoginCount(1);
             user.setLoginTime(DateUtil.date());
-            user.setBillNo(middleSequenceService.generate("KH", 6));
+            user.setBillNo(middleSequenceService.generate("HZ", 6));
             user.setInfoState(0);
             user.setAuditState(0);
             this.save(user);
@@ -111,13 +111,22 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     public void updateUserInfo(UserInfoDTO dto) {
         PartnerUser updateCustomerUser = new PartnerUser();
         BeanUtils.copyProperties(dto, updateCustomerUser);
-        updateCustomerUser.setId(CustomerUserHolder.currentLoginUserId());
+        updateCustomerUser.setId(partnerUserHolder.currentLoginUserId());
+        baseMapper.updateById(updateCustomerUser);
+    }
+
+    @Override
+    public void submitInfo(UserInfoDTO dto) {
+        PartnerUser updateCustomerUser = new PartnerUser();
+        BeanUtils.copyProperties(dto, updateCustomerUser);
+        updateCustomerUser.setId(partnerUserHolder.currentLoginUserId());
+        updateCustomerUser.setInfoSubmitTime(DateUtil.date());
         baseMapper.updateById(updateCustomerUser);
     }
 
     private PartnerUser getCurrentLoginCustomerUser() {
         try {
-            String userId = CustomerUserHolder.currentLoginUserId(); // 此方法也提供给其他模块调用,所以加一下登录和类型判断
+            String userId = partnerUserHolder.currentLoginUserId(); // 此方法也提供给其他模块调用,所以加一下登录和类型判断
             PartnerUser customerUser = getById(userId);
             return customerUser;
         } catch (Exception e) {

+ 1 - 1
jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/util/CustomerUserHolder.java → jeecg-module-system/jeecg-shop/src/main/java/org/jeecg/modules/shop/user/util/partnerUserHolder.java

@@ -12,7 +12,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 
-public abstract class CustomerUserHolder {
+public abstract class partnerUserHolder {
     
     /**
      * 判断当前请求是否是登录状态,如果不是,判断是否可以登录