he2802 2 years ago
parent
commit
6aba33768e
21 changed files with 678 additions and 10 deletions
  1. 2 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityPosterController.java
  2. 67 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionLinkController.java
  3. 14 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java
  4. 1 0
      zhongzheng-api/src/main/resources/application-dev.yml
  5. 42 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java
  6. 7 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java
  7. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionActivityPosterQueryBo.java
  8. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkAddBo.java
  9. 49 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkEditBo.java
  10. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkQueryBo.java
  11. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionLink.java
  12. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionLinkMapper.java
  13. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionActivityPosterService.java
  14. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionLinkService.java
  15. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionSellerService.java
  16. 110 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityPosterServiceImpl.java
  17. 102 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionLinkServiceImpl.java
  18. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityPosterVo.java
  19. 47 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionLinkVo.java
  20. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionSellerVo.java
  21. 19 0
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionLinkMapper.xml

+ 2 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityPosterController.java

@@ -50,10 +50,10 @@ public class DistributionActivityPosterController extends BaseController {
     @ApiOperation("生成业务员海报")
     @PreAuthorize("@ss.hasPermi('system:poster:query')")
     @GetMapping("/makePoster")
-    public AjaxResult<DistributionActivityPosterVo> makePoster(DistributionActivityPosterQueryBo bo) {
+    public AjaxResult<String> makePoster(DistributionActivityPosterQueryBo bo) {
         ClientLoginSeller loginUser = sellerTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setSellerId(loginUser.getSeller().getSellerId());
-        return AjaxResult.success(iDistributionActivityPosterService.makePoster(bo));
+        return AjaxResult.success("成功",iDistributionActivityPosterService.makePoster(bo));
     }
 
 

+ 67 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionLinkController.java

@@ -0,0 +1,67 @@
+package com.zhongzheng.controller.distribution;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkEditBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionLinkService;
+import com.zhongzheng.modules.distribution.vo.DistributionLinkVo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 分销链路Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Api(value = "分销链路控制器", tags = {"分销链路管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/link")
+public class DistributionLinkController extends BaseController {
+
+    private final IDistributionLinkService iDistributionLinkService;
+
+    private final WxTokenService wxTokenService;
+
+    /**
+     * 新增分销链路
+     */
+    @ApiOperation("绑定分销链路")
+    @PreAuthorize("@ss.hasPermi('system:link:add')")
+    @Log(title = "分销链路", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody DistributionLinkAddBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return toAjax(iDistributionLinkService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+
+
+}

+ 14 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java

@@ -106,7 +106,7 @@ public class DistributionSellerController extends BaseController {
      */
     @ApiOperation("登录业务员用户信息")
     @GetMapping("getInfo")
-    public AjaxResult<DistributionSellerVo> getInfo(UserVisitLogAddBo bo)
+    public AjaxResult<DistributionSellerVo> getInfo()
     {
         ClientLoginSeller loginUser = sellerTokenService.getLoginUser(ServletUtils.getRequest());
         DistributionSellerVo vo = iDistributionSellerService.queryById(loginUser.getSeller().getSellerId());
@@ -114,4 +114,17 @@ public class DistributionSellerController extends BaseController {
         return AjaxResult.success(vo);
     }
 
+    /**
+     * 获取用户信息
+     *
+     * @return 用户信息
+     */
+    @ApiOperation("通过分享code查询业务员用户信息")
+    @GetMapping("getInfoByShareCode")
+    public AjaxResult<DistributionSellerVo> getInfoByShareCode(String shareCode)
+    {
+        DistributionSellerVo vo = iDistributionSellerService.queryByShareCode(shareCode);
+        vo.setNull();
+        return AjaxResult.success(vo);
+    }
 }

+ 1 - 0
zhongzheng-api/src/main/resources/application-dev.yml

@@ -154,6 +154,7 @@ wisdomExamRoom:
 certificate:
     host: http://192.168.1.38:8000/
 
+
 liveGotoURL: http://120.79.166.78:19014/
 
 enCodeVersion: trial

+ 42 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java

@@ -5,10 +5,12 @@ import cn.hutool.core.util.StrUtil;
 import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.aliyun.teaopenapi.models.Config;
+import com.google.zxing.common.BitMatrix;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import io.micrometer.core.lang.NonNull;
 import net.sf.jsqlparser.expression.LongValue;
 
+import java.awt.image.BufferedImage;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
@@ -362,4 +364,44 @@ public class ToolsUtils {
         return sb.toString();
     }
 
+    public static BufferedImage toBufferedImage(BitMatrix matrix) {
+        int black = 0xFF000000;
+        int white  = 0x00FFFFFF;
+        int width = matrix.getWidth();
+        int height = matrix.getHeight();
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+        for (int x = 0; x < width; x++) {
+            for (int y = 0; y < height; y++) {
+                image.setRGB(x, y, matrix.get(x, y) ? black : white);
+            }
+        }
+        int imgHeight = image.getHeight();//取得图片的长和宽
+        int imgWidth = image.getWidth();
+        int c = image.getRGB(3, 3);
+        int alpha = 10;
+        //防止越位
+        if (alpha < 0) {
+            alpha = 0;
+        } else if (alpha > 10) {
+            alpha = 10;
+        }
+        BufferedImage tmpImg = new BufferedImage(imgWidth, imgHeight,BufferedImage.TYPE_4BYTE_ABGR);//新建一个类型支持透明的BufferedImage
+        for(int i = 0; i < imgWidth; ++i)//把原图片的内容复制到新的图片,同时把背景设为透明
+        {
+            for(int j = 0; j < imgHeight; ++j){
+                //把背景设为透明
+                if(image.getRGB(i, j) == c){
+                    tmpImg .setRGB(i, j, c & 0x00ffffff);
+                }
+                //设置透明度
+                else{
+                    int rgb = tmpImg .getRGB(i, j);
+                    rgb = ((alpha * 255 / 10) << 24) | (rgb & 0x00ffffff);
+                    tmpImg .setRGB(i, j, rgb);
+                }
+            }
+        }
+        return tmpImg ;
+    }
+
 }

+ 7 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java

@@ -272,6 +272,13 @@ public class DistributionSellerServiceImpl extends ServiceImpl<DistributionSelle
         return BeanUtil.toBean(db, DistributionSellerVo.class);
     }
 
+    @Override
+    public DistributionSellerVo queryByShareCode(String shareCode) {
+        DistributionSeller db = getOne(new LambdaQueryWrapper<DistributionSeller>()
+                .eq(DistributionSeller::getShareCode, shareCode));
+        return BeanUtil.toBean(db, DistributionSellerVo.class);
+    }
+
     @Override
     public List<DistributionSellerVo> queryList(DistributionSellerQueryBo bo) {
         LambdaQueryWrapper<DistributionSeller> lqw = Wrappers.lambdaQuery();

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionActivityPosterQueryBo.java

@@ -22,6 +22,8 @@ import com.zhongzheng.common.core.domain.BaseEntity;
 @ApiModel("【请填写功能名称】分页查询对象")
 public class DistributionActivityPosterQueryBo extends BaseEntity {
 
+	private Long distributionId;
+
 	/** 分页大小 */
 	@ApiModelProperty("分页大小")
 	private Integer pageSize;

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkAddBo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.distribution.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 分销链路添加对象 distribution_link
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Data
+@ApiModel("分销链路添加对象")
+public class DistributionLinkAddBo {
+
+    /** 链编码 */
+    @ApiModelProperty("链编码")
+    private String linkCode;
+    /** 业务员ID */
+    @ApiModelProperty("业务员ID")
+    private Long sellerId;
+    /** 分销活动ID */
+    @ApiModelProperty("分销活动ID")
+    private Long distributionId;
+    /** 状态:1有效,-1无效 */
+    @ApiModelProperty("状态:1有效,-1无效")
+    private Integer status;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 是否发起者 1是 0不是 */
+    @ApiModelProperty("是否发起者 1是 0不是")
+    private Integer owner;
+    @ApiModelProperty("用户ID")
+    private Long userId;
+}

+ 49 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkEditBo.java

@@ -0,0 +1,49 @@
+package com.zhongzheng.modules.distribution.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 分销链路编辑对象 distribution_link
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Data
+@ApiModel("分销链路编辑对象")
+public class DistributionLinkEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 链编码 */
+    @ApiModelProperty("链编码")
+    private String linkCode;
+
+    /** 业务员ID */
+    @ApiModelProperty("业务员ID")
+    private Long sellerId;
+
+    /** 分销活动ID */
+    @ApiModelProperty("分销活动ID")
+    private Long distributionId;
+
+    /** 状态:1有效,-1无效 */
+    @ApiModelProperty("状态:1有效,-1无效")
+    private Integer status;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+    /** 是否发起者 1是 0不是 */
+    @ApiModelProperty("是否发起者 1是 0不是")
+    private Integer owner;
+
+}

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionLinkQueryBo.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.distribution.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 分销链路分页查询对象 distribution_link
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("分销链路分页查询对象")
+public class DistributionLinkQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 链编码 */
+	@ApiModelProperty("链编码")
+	private String linkCode;
+	/** 业务员ID */
+	@ApiModelProperty("业务员ID")
+	private Long sellerId;
+	/** 分销活动ID */
+	@ApiModelProperty("分销活动ID")
+	private Long distributionId;
+	/** 状态:1有效,-1无效 */
+	@ApiModelProperty("状态:1有效,-1无效")
+	private Integer status;
+	/** 是否发起者 1是 0不是 */
+	@ApiModelProperty("是否发起者 1是 0不是")
+	private Integer owner;
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionLink.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.distribution.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 分销链路对象 distribution_link
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("distribution_link")
+public class DistributionLink implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 链编码 */
+    private String linkCode;
+    /** 业务员ID */
+    private Long sellerId;
+    /** 分销活动ID */
+    private Long distributionId;
+    /** 状态:1有效,-1无效 */
+    private Integer status;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 是否发起者 1是 0不是 */
+    private Integer owner;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionLinkMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.distribution.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.distribution.domain.DistributionLink;
+
+/**
+ * 分销链路Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+public interface DistributionLinkMapper extends BaseMapper<DistributionLink> {
+
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionActivityPosterService.java

@@ -23,7 +23,7 @@ public interface IDistributionActivityPosterService extends IService<Distributio
 	 */
 	DistributionActivityPosterVo queryById(Long posterId);
 
-	DistributionActivityPosterVo makePoster(DistributionActivityPosterQueryBo bo);
+	String makePoster(DistributionActivityPosterQueryBo bo);
 
 	/**
 	 * 查询列表

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionLinkService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.distribution.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkEditBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkQueryBo;
+import com.zhongzheng.modules.distribution.domain.DistributionLink;
+import com.zhongzheng.modules.distribution.vo.DistributionLinkVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 分销链路Service接口
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+public interface IDistributionLinkService extends IService<DistributionLink> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	DistributionLinkVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<DistributionLinkVo> queryList(DistributionLinkQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入分销链路
+	 * @param bo 分销链路新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(DistributionLinkAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改分销链路
+	 * @param bo 分销链路编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(DistributionLinkEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionSellerService.java

@@ -26,7 +26,9 @@ public interface IDistributionSellerService extends IService<DistributionSeller>
 	 * 查询单个
 	 * @return
 	 */
-	DistributionSellerVo queryById(Long salerId);
+	DistributionSellerVo queryById(Long sellerId);
+
+	DistributionSellerVo queryByShareCode(String shareCode);
 
 	/**
 	 * 查询列表

+ 110 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityPosterServiceImpl.java

@@ -1,26 +1,49 @@
 package com.zhongzheng.modules.distribution.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 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.github.pagehelper.Page;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterAddBo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterEditBo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkAddBo;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
 import com.zhongzheng.modules.distribution.domain.DistributionActivityPoster;
 import com.zhongzheng.modules.distribution.mapper.DistributionActivityPosterMapper;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
+import com.zhongzheng.modules.distribution.service.IDistributionLinkService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityPosterVo;
+import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.system.domain.SysTenant;
+import com.zhongzheng.modules.system.service.ISysTenantService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.net.URL;
+import java.util.Base64;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -38,6 +61,21 @@ public class DistributionActivityPosterServiceImpl extends ServiceImpl<Distribut
     @Autowired
     private IDistributionActivityService iDistributionActivityService;
 
+    @Autowired
+    private IDistributionSellerService iDistributionSellerService;
+
+    @Autowired
+    private IDistributionLinkService iDistributionLinkService;
+
+    @Autowired
+    private  ISysTenantService iSysTenantService;
+
+    @Value("${aliyun.oss.endpoint}")
+    private String ALIYUN_OSS_ENDPOINT;
+
+    @Value("${certificate.host}")
+    private String CERTIFICATE_HOST;
+
     @Override
     public DistributionActivityPosterVo queryById(Long posterId){
         DistributionActivityPoster db = this.baseMapper.selectById(posterId);
@@ -45,8 +83,76 @@ public class DistributionActivityPosterServiceImpl extends ServiceImpl<Distribut
     }
 
     @Override
-    public DistributionActivityPosterVo makePoster(DistributionActivityPosterQueryBo bo) {
-        return null;
+    public String makePoster(DistributionActivityPosterQueryBo bo) {
+        DistributionActivityVo activityVo = iDistributionActivityService.queryById(bo.getDistributionId());
+        DistributionActivityPoster db = this.baseMapper.selectById(activityVo.getPosterId());
+        DistributionSellerVo sellerVo = iDistributionSellerService.queryById(bo.getSellerId());
+        String posterConfig = db.getPosterConfig();
+        if(Validator.isEmpty(posterConfig)){
+            throw new CustomException("海报暂未设置");
+        }
+        String bacImg = db.getUrl();
+        JSONObject posterObj = JSON.parseObject(posterConfig);
+        JSONObject cardObj = posterObj.getJSONObject("cardCode");
+        JSONObject disObj = posterObj.getJSONObject("distribution");
+        String urlBase64 = null;
+        try {
+            String imageLocalUrl = ALIYUN_OSS_ENDPOINT + "/" + bacImg;
+            URL url = new URL(imageLocalUrl);
+            BufferedImage imageLocal = ImageIO.read(url);
+            // 以本地图片为模板
+            Graphics2D g = imageLocal.createGraphics();
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+            SysTenant sysTenant = iSysTenantService.getOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantId, ToolsUtils.getTenantId()));
+            //电子名片
+            boolean cardChecked = Boolean.valueOf(String.valueOf(cardObj.get("checked")));
+            if(cardChecked){
+                Integer top = Integer.valueOf(String.valueOf(cardObj.get("top")));
+                Integer left = Integer.valueOf(String.valueOf(cardObj.get("left")));
+                Integer width = Integer.valueOf(String.valueOf(cardObj.get("width")));
+                Integer height = Integer.valueOf(String.valueOf(cardObj.get("height")));
+                String qrTxt = sysTenant.getHostH5Seller()+"/pages/vcard/index?sellerCode="+sellerVo.getShareCode();
+                QRCodeWriter qrCodeWriter = new QRCodeWriter();
+                BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, width, height);
+                BufferedImage qrImage = ToolsUtils.toBufferedImage(bitMatrix);
+                // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
+                g.drawImage(qrImage, left, top, width, height, null);
+            }
+
+            //分销码
+            boolean disChecked = Boolean.valueOf(String.valueOf(disObj.get("checked")));
+            if(disChecked){
+                DistributionLinkAddBo addBo = new DistributionLinkAddBo();
+                String linkCode =activityVo.getDistributionId()+"_"+sellerVo.getSellerId()+"_"+ToolsUtils.getRandomString(8);
+                addBo.setLinkCode(linkCode);
+                addBo.setSellerId(sellerVo.getSellerId());
+                addBo.setDistributionId(activityVo.getDistributionId());
+                addBo.setOwner(1);
+                iDistributionLinkService.insertByAddBo(addBo);
+
+                Integer top = Integer.valueOf(String.valueOf(disObj.get("top")));
+                Integer left = Integer.valueOf(String.valueOf(disObj.get("left")));
+                Integer width = Integer.valueOf(String.valueOf(disObj.get("width")));
+                Integer height = Integer.valueOf(String.valueOf(disObj.get("height")));
+                String qrTxt = sysTenant.getHostH5Seller()+"/pages5/scan/retailact?sellerCode="+sellerVo.getShareCode()+"&distributionId="+activityVo.getDistributionId()+"&linkCode="+linkCode;
+                QRCodeWriter qrCodeWriter = new QRCodeWriter();
+                BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, width, height);
+                BufferedImage qrImage = ToolsUtils.toBufferedImage(bitMatrix);
+                // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
+                g.drawImage(qrImage, left, top, width, height, null);
+            }
+            // 完成模板修改
+            g.dispose();
+            ByteArrayOutputStream os = new ByteArrayOutputStream();
+            ImageIO.write(imageLocal, "jpg", os);
+            //转换为base64
+            Base64.Encoder encoder1 = Base64.getEncoder();
+            urlBase64 = "data:image/jpeg;base64,"
+                    + encoder1.encodeToString(os.toByteArray());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return urlBase64;
     }
 
     @Override
@@ -118,4 +224,6 @@ public class DistributionActivityPosterServiceImpl extends ServiceImpl<Distribut
         }
         return this.removeByIds(ids);
     }
+
+
 }

+ 102 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionLinkServiceImpl.java

@@ -0,0 +1,102 @@
+package com.zhongzheng.modules.distribution.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkEditBo;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkQueryBo;
+import com.zhongzheng.modules.distribution.domain.DistributionLink;
+import com.zhongzheng.modules.distribution.mapper.DistributionLinkMapper;
+import com.zhongzheng.modules.distribution.service.IDistributionLinkService;
+import com.zhongzheng.modules.distribution.vo.DistributionLinkVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 分销链路Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Service
+public class DistributionLinkServiceImpl extends ServiceImpl<DistributionLinkMapper, DistributionLink> implements IDistributionLinkService {
+
+    @Override
+    public DistributionLinkVo queryById(Long id){
+        DistributionLink db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, DistributionLinkVo.class);
+    }
+
+    @Override
+    public List<DistributionLinkVo> queryList(DistributionLinkQueryBo bo) {
+        LambdaQueryWrapper<DistributionLink> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(bo.getLinkCode()), DistributionLink::getLinkCode, bo.getLinkCode());
+        lqw.eq(bo.getSellerId() != null, DistributionLink::getSellerId, bo.getSellerId());
+        lqw.eq(bo.getDistributionId() != null, DistributionLink::getDistributionId, bo.getDistributionId());
+        lqw.eq(bo.getStatus() != null, DistributionLink::getStatus, bo.getStatus());
+        lqw.eq(bo.getOwner() != null, DistributionLink::getOwner, bo.getOwner());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<DistributionLinkVo> entity2Vo(Collection<DistributionLink> collection) {
+        List<DistributionLinkVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, DistributionLinkVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<DistributionLink> page = (Page<DistributionLink>)collection;
+            Page<DistributionLinkVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(DistributionLinkAddBo bo) {
+        DistributionLink add = BeanUtil.toBean(bo, DistributionLink.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(DistributionLinkEditBo bo) {
+        DistributionLink update = BeanUtil.toBean(bo, DistributionLink.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(DistributionLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityPosterVo.java

@@ -43,6 +43,6 @@ public class DistributionActivityPosterVo {
 	@ApiModelProperty("备注")
 	private String remark;
 
-	@ApiModelProperty("业务员海报地址")
-	private String posterUrl;
+	@ApiModelProperty("业务员海报base64")
+	private String posterImg;
 }

+ 47 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionLinkVo.java

@@ -0,0 +1,47 @@
+package com.zhongzheng.modules.distribution.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 分销链路视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Data
+@ApiModel("分销链路视图对象")
+public class DistributionLinkVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 链编码 */
+	@Excel(name = "链编码")
+	@ApiModelProperty("链编码")
+	private String linkCode;
+	/** 业务员ID */
+	@Excel(name = "业务员ID")
+	@ApiModelProperty("业务员ID")
+	private Long sellerId;
+	/** 分销活动ID */
+	@Excel(name = "分销活动ID")
+	@ApiModelProperty("分销活动ID")
+	private Long distributionId;
+	/** 状态:1有效,-1无效 */
+	@Excel(name = "状态:1有效,-1无效")
+	@ApiModelProperty("状态:1有效,-1无效")
+	private Integer status;
+	/** 是否发起者 1是 0不是 */
+	@Excel(name = "是否发起者 1是 0不是")
+	@ApiModelProperty("是否发起者 1是 0不是")
+	private Integer owner;
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionSellerVo.java

@@ -20,7 +20,7 @@ public class DistributionSellerVo {
 
 	/** $pkColumn.columnComment */
 	@ApiModelProperty("$pkColumn.columnComment")
-	private Long salerId;
+	private Long sellerId;
 
 	/** 真实姓名 */
 	@Excel(name = "真实姓名")

+ 19 - 0
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionLinkMapper.xml

@@ -0,0 +1,19 @@
+<?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="com.zhongzheng.modules.distribution.mapper.DistributionLinkMapper">
+
+    <resultMap type="com.zhongzheng.modules.distribution.domain.DistributionLink" id="DistributionLinkResult">
+        <result property="id" column="id"/>
+        <result property="linkCode" column="link_code"/>
+        <result property="sellerId" column="seller_id"/>
+        <result property="distributionId" column="distribution_id"/>
+        <result property="status" column="status"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="owner" column="owner"/>
+    </resultMap>
+
+
+</mapper>