瀏覽代碼

功能提交:维护信息支持多客户维护,客户加款,款项撤销入流水mq,设置 token 生效时间为i4小时

杨六六 4 年之前
父節點
當前提交
f779fbbbcf
共有 26 個文件被更改,包括 631 次插入67 次删除
  1. 20 3
      common/fire-dto/src/main/java/com/fire/dto/OperatorMaintenance.java
  2. 24 0
      common/fire-dto/src/main/java/com/fire/dto/OperatorMaintennaceCustomer.java
  3. 37 0
      common/fire-dto/src/main/java/com/fire/dto/PartnerUserInfo.java
  4. 2 0
      modules/admin/src/main/java/com/fire/admin/dto/AdditionalPaymentDto.java
  5. 3 4
      modules/admin/src/main/java/com/fire/admin/dto/CustomerDto.java
  6. 3 0
      modules/admin/src/main/java/com/fire/admin/dto/OperatorMaintenanceDto.java
  7. 72 0
      modules/admin/src/main/java/com/fire/admin/dto/OperatorMaintenanceSaveDto.java
  8. 3 0
      modules/admin/src/main/java/com/fire/admin/mapper/CustomerProductInfoMapper.java
  9. 4 2
      modules/admin/src/main/java/com/fire/admin/mapper/OperatorMaintenanceMapper.java
  10. 45 0
      modules/admin/src/main/java/com/fire/admin/mapper/PartnerUserMapper.java
  11. 1 1
      modules/admin/src/main/java/com/fire/admin/rest/OperatorMaintenanceController.java
  12. 52 0
      modules/admin/src/main/java/com/fire/admin/rest/PartnerUserController.java
  13. 25 2
      modules/admin/src/main/java/com/fire/admin/rest/TestController.java
  14. 2 0
      modules/admin/src/main/java/com/fire/admin/rest/UtilController.java
  15. 2 0
      modules/admin/src/main/java/com/fire/admin/security/config/PreWebSecurityConfig.java
  16. 24 0
      modules/admin/src/main/java/com/fire/admin/service/PartnerUserService.java
  17. 94 11
      modules/admin/src/main/java/com/fire/admin/service/impl/AdditionalPaymentServiceImpl.java
  18. 36 3
      modules/admin/src/main/java/com/fire/admin/service/impl/CustomerServiceImpl.java
  19. 38 6
      modules/admin/src/main/java/com/fire/admin/service/impl/OperatorMaintenanceServiceImpl.java
  20. 31 0
      modules/admin/src/main/java/com/fire/admin/service/impl/PartnerUserServiceImpl.java
  21. 1 1
      modules/admin/src/main/java/com/fire/admin/util/JwtUtil.java
  22. 4 0
      modules/admin/src/main/java/com/fire/admin/vo/CustomerInfoVo.java
  23. 12 0
      modules/admin/src/main/java/com/fire/admin/vo/OperatorMaintenanceVo.java
  24. 5 0
      modules/admin/src/main/resources/mapper/CustomerMapper.xml
  25. 58 34
      modules/admin/src/main/resources/mapper/OperatorMaintennaceMapper.xml
  26. 33 0
      modules/admin/src/main/resources/mapper/PartnerUserMapper.xml

+ 20 - 3
common/fire-dto/src/main/java/com/fire/dto/OperatorMaintenance.java

@@ -1,17 +1,25 @@
 package com.fire.dto;
 
 import java.util.Date;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+
 import javax.validation.constraints.NotNull;
 
 @ApiModel(value = "运营商系统维护表实体")
 @Data
 @TableName("operator_maintenance")
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OperatorMaintenance {
 
     @ApiModelProperty(value = "地区")
@@ -55,11 +63,20 @@ public class OperatorMaintenance {
     @ApiModelProperty(value = "创建者时间")
     private String createTime;
 
-    @ApiModelProperty(value = "客户id")
-    private Long customerId;
-
     @ApiModelProperty(value = "充值类型。默认为快充 快充:1  慢充:2")
     private Integer rechargeType;
 
+    @ApiModelProperty(value = "客户编号")
+    private Long customerId;
+
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+
+    @ApiModelProperty(value = "客户集合")
+    @TableField(exist = false)
+    @NotNull(message="客戶信息不爲空")
+    private List<OperatorMaintennaceCustomer> customerInfos;
+
+
 
 }

+ 24 - 0
common/fire-dto/src/main/java/com/fire/dto/OperatorMaintennaceCustomer.java

@@ -0,0 +1,24 @@
+package com.fire.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @Description: TODO 添加维护信息的客户信息
+ * @ClassName: OperatorMaintennaceCustomer
+ * @Author: liuliu
+ * @Date: 2021/7/7 11:58
+ */
+@Data
+@Builder
+public class OperatorMaintennaceCustomer {
+
+    @ApiModelProperty(value = "客户ID")
+    private Long customerId;
+
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+}

+ 37 - 0
common/fire-dto/src/main/java/com/fire/dto/PartnerUserInfo.java

@@ -0,0 +1,37 @@
+package com.fire.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @Description: TODO 客户与中间人的实体
+ * @ClassName: PartnerUserInfo
+ * @Author: liuliu
+ * @Date: 2021/7/5 17:31
+ */
+@Data
+@TableName("partner_user_info")
+@Builder
+public class PartnerUserInfo {
+
+    @ApiModelProperty(value = "客户ID")
+    @NotNull(message = "客户ID为空")
+    private Long customerId;
+
+    @ApiModelProperty(value = "用户编号(中间人用户id)")
+    @NotNull(message = "中间人用户编号为空")
+    private Long userId;
+
+    @ApiModelProperty(value = "中间人名称")
+    @NotNull(message = "用户名称为空")
+    private String partnerName;
+
+    @ApiModelProperty(value = "代理商提成比例(按照面额计算)")
+    private BigDecimal partnerCommission;
+
+}

+ 2 - 0
modules/admin/src/main/java/com/fire/admin/dto/AdditionalPaymentDto.java

@@ -78,6 +78,8 @@ public class AdditionalPaymentDto  {
     private Integer undo;
 
 
+    @ApiModelProperty(value = "客户名称")
+    private  String customerName;
     /**
      * 每页记录条数
      */

+ 3 - 4
modules/admin/src/main/java/com/fire/admin/dto/CustomerDto.java

@@ -2,6 +2,7 @@ package com.fire.admin.dto;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fire.dto.BankCard;
+import com.fire.dto.PartnerUserInfo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -22,9 +23,6 @@ public class CustomerDto {
     @ApiModelProperty(value = "客户ID")
     private Long customerId;
 
-    @ApiModelProperty(value = "合作伙伴ID")
-    private Long partnerId;
-
     @ApiModelProperty(value = "客户名称")
     private String customerName;
 
@@ -75,7 +73,6 @@ public class CustomerDto {
     private String updateTime;
 
 
-
     @ApiModelProperty(value = "跟用户关联,客户登录使用")
     private Long userId;
 
@@ -87,5 +84,7 @@ public class CustomerDto {
     @TableField(exist = false)
     private List<BankCard> bankCards;
 
+    @ApiModelProperty("中间人集合")
+    private List<PartnerUserInfo> partnerUsers;
 
 }

+ 3 - 0
modules/admin/src/main/java/com/fire/admin/dto/OperatorMaintenanceDto.java

@@ -42,6 +42,9 @@ public class OperatorMaintenanceDto {
     @ApiModelProperty(value = "充值类型。默认为快充 快充:1  慢充:2")
     private Integer rechargeType;
 
+    @ApiModelProperty(value = "客户编号")
+    private Long customerId;
+
     /**
      * 每页记录条数
      */

+ 72 - 0
modules/admin/src/main/java/com/fire/admin/dto/OperatorMaintenanceSaveDto.java

@@ -0,0 +1,72 @@
+package com.fire.admin.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fire.dto.OperatorMaintennaceCustomer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: TODO 维护信息新增的Dto网络传输对象
+ * @ClassName: OperatorMaintenanceSaveDto
+ * @Author: liuliu
+ * @Date: 2021/7/7 12:09
+ */
+@Data
+@Builder
+public class OperatorMaintenanceSaveDto {
+
+    @ApiModelProperty(value = "地区")
+    @NotNull(message = "参数 province 不能为空")
+    private String province;
+
+    @NotNull(message = "参数 operator 不能为空")
+    @ApiModelProperty(value = "运营商 1:移动 2:联通 3:电信")
+    private Integer operator;
+
+    @ApiModelProperty(value = "维护状态:0-否 ;1-维护")
+    @NotNull(message = "参数 status 不能为空")
+    private Integer status;
+
+    @ApiModelProperty(value = "开始维护时间")
+    @NotNull(message = "参数 startTime 不能为空")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束维护时间")
+    @NotNull(message = "参数 endTime 不能为空")
+    private Date endTime;
+
+    @ApiModelProperty(value = "0 表示所有面额")
+    @NotNull(message = "参数 facePrice 不能为空")
+    @TableField(value = "face_price")
+    private Long facePrice;
+
+    @ApiModelProperty(value = "维护类型:0.自动 1.手动")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "修改者名称")
+    @TableField(value = "modify_user")
+    private String modifyUser;
+
+    @ApiModelProperty(value = "修改时间")
+    private String updateTime;
+
+    @ApiModelProperty(value = "创建者名称")
+    private String createUser;
+
+    @ApiModelProperty(value = "创建者时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "充值类型。默认为快充 快充:1  慢充:2")
+    private Integer rechargeType;
+    
+
+    @ApiModelProperty(value = "客户集合")
+    @TableField(exist = false)
+    private List<OperatorMaintennaceCustomer> customerInfos;
+    
+}

+ 3 - 0
modules/admin/src/main/java/com/fire/admin/mapper/CustomerProductInfoMapper.java

@@ -35,4 +35,7 @@ public interface CustomerProductInfoMapper extends BaseMapper<CustomerProduct> {
     */
     int customerProductSaveOrUpdate(@Param("list") List<CustomerProduct> customerProductList);
 
+
+
+
 }

+ 4 - 2
modules/admin/src/main/java/com/fire/admin/mapper/OperatorMaintenanceMapper.java

@@ -10,6 +10,8 @@ import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @ClassName: OperatorMaintenanceMapper
  * @Author: liuliu
@@ -26,7 +28,7 @@ public interface OperatorMaintenanceMapper extends BaseMapper<OperatorMaintenanc
      * @author: liuliu
      * @date: 2021-06-24 14:22
      */
-    int saveOrUpdateOperatorMaintenance(@Param("param") OperatorMaintenance OperatorMaintenance);
+    int saveOrUpdateOperatorMaintenanceBeatch(@Param("operatorMaintenances") List<OperatorMaintenance> OperatorMaintenance);
 
 
     /**
@@ -47,7 +49,7 @@ public interface OperatorMaintenanceMapper extends BaseMapper<OperatorMaintenanc
      * @author: liuliu
      * @date: 2021-06-25 14:48
      */
-    @Delete("delete from operator_maintenance where face_price=#{param.facePrice} and operator=#{param.operator} and province=#{param.province} and recharge_type=#{param.rechargeType} and oder_type=1")
+    @Delete("delete from operator_maintenance where face_price=#{param.facePrice} and operator=#{param.operator} and province=#{param.province} and recharge_type=#{param.rechargeType} and customer_id=#{param.customerId} and oder_type=1")
     int deleteOperatorMaintenance(@Param("param") OperatorMaintenanceDto operatorMaintenanceDto);
 
 }

+ 45 - 0
modules/admin/src/main/java/com/fire/admin/mapper/PartnerUserMapper.java

@@ -0,0 +1,45 @@
+package com.fire.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fire.dto.PartnerUserInfo;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * @Description: TODO 客户中间人mapper
+ * @ClassName: PartnerUserMapper
+ * @Author: liuliu
+ * @Date: 2021/7/5 17:46
+ */
+@Mapper
+public interface PartnerUserMapper extends BaseMapper<PartnerUserInfo> {
+
+    /***
+     *@description: TODO 批量写入或修改客户中间人信息
+     * @param partnerUserList
+     *@return: int
+     *@author: liuliu
+     *@date: 2021-07-05 17:52
+    */
+    int insertUpdateBeatchPartnerUserInfo(@Param("list") List<PartnerUserInfo> partnerUserList);
+
+
+    /***
+     *@description: TODO 删除中间人关联关系
+     * @param partnerUserInfo
+     *@return: int
+     *@author: liuliu
+     *@date: 2021-07-06 11:02
+    */
+    @Delete("delete from partner_user_info where customer_id=#{info.customerId} and user_id=#{info.userId} and partner_name=#{info.partnerName}")
+    int deletePartnerUserInfo(@Param("info") PartnerUserInfo partnerUserInfo);
+
+
+    @Select("select customer_id,user_id,partner_name,partner_commission from partner_user_info where customer_id=#{customerId}")
+    List<PartnerUserInfo> selectPartnerUserInfoByCustomerId(Long customerId);
+
+}

+ 1 - 1
modules/admin/src/main/java/com/fire/admin/rest/OperatorMaintenanceController.java

@@ -57,7 +57,7 @@ public class OperatorMaintenanceController {
     }
 
 
-    @ApiOperation("删除运营商维护信息,必须传递参数为:运营商,面额,地区")
+    @ApiOperation("删除运营商维护信息,必须传递参数为:运营商,面额,地区,客户编号")
     @DeleteMapping
     public BaseResponse operatorMaintenanceDtoRemove(@RequestBody OperatorMaintenanceDto operatorMaintenanceDto) {
         operatorMaintenanceService.removeOperatorMaintenance(operatorMaintenanceDto);

+ 52 - 0
modules/admin/src/main/java/com/fire/admin/rest/PartnerUserController.java

@@ -0,0 +1,52 @@
+package com.fire.admin.rest;
+
+import com.fire.admin.service.PartnerUserService;
+import com.fire.dto.PartnerUserInfo;
+import com.fire.dto.enums.Status;
+import com.fire.dto.response.BaseRestResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * @Description: TODO 中间人控制层
+ * @ClassName: PartnerUserController
+ * @Author: liuliu
+ * @Date: 2021/7/6 11:19
+ */
+@Api(tags = "中间人相关的接口")
+@RestController
+@RequestMapping("/partner/user")
+public class PartnerUserController {
+
+    private PartnerUserService partnerUserService;
+
+    @Autowired
+    public PartnerUserController(PartnerUserService partnerUserService) {
+        this.partnerUserService = partnerUserService;
+    }
+
+    @ApiOperation("删除中间人信息")
+    @PostMapping("/del")
+    public BaseRestResponse partnerUserRemove(@Valid @RequestBody PartnerUserInfo partnerUserInfo, BindingResult bindingResult) {
+
+        if (bindingResult.hasErrors()) {
+            FieldError fieldError = bindingResult.getFieldError();
+            //获取验证失败字段名
+            String field = fieldError.getField();
+            //获取验证失败的message
+            String defaultMessage = fieldError.getDefaultMessage();
+            return BaseRestResponse.error(Status.PARAM_LOSS.status(), defaultMessage);
+        }
+        return new BaseRestResponse(partnerUserService.removePartnerUserInfo(partnerUserInfo));
+    }
+
+}

+ 25 - 2
modules/admin/src/main/java/com/fire/admin/rest/TestController.java

@@ -5,9 +5,12 @@ import com.fire.admin.dto.CustomerProductDto;
 import com.fire.admin.dto.IpWhiteListDto;
 import com.fire.admin.mapper.CustomerProductInfoMapper;
 import com.fire.admin.mapper.FlowAppMapper;
+import com.fire.admin.mapper.PartnerUserMapper;
 import com.fire.admin.util.AliyunOSSUtil;
 import com.fire.admin.util.EnumUtils;
+import com.fire.dto.PartnerUserInfo;
 import com.fire.dto.response.BaseRestResponse;
+import com.fire.utils.date.DateUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.SneakyThrows;
@@ -20,6 +23,7 @@ import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -43,15 +47,29 @@ public class TestController {
     @Autowired
     private FlowAppMapper flowAppMapper;
 
-
+    @Autowired
+    private PartnerUserMapper partnerUserMapper;
 
     @Autowired
     private AliyunOSSUtil aliyunOSSUtil;
 
+    @PostMapping("/in")
+    @ApiOperation("批量写入或修改中间人信息")
+    public int addPartnerUser() {
+        List<PartnerUserInfo> list = new ArrayList<>();
+
+        PartnerUserInfo info1 = PartnerUserInfo.builder().userId(1L).customerId(11L).partnerName("九派科技").partnerCommission(new BigDecimal(0.002).setScale(4,RoundingMode.HALF_DOWN)).build();
+        PartnerUserInfo info2 = PartnerUserInfo.builder().userId(2L).customerId(12L).partnerName("九派科技").partnerCommission(new BigDecimal(0.002).setScale(4,RoundingMode.HALF_DOWN)).build();
+        PartnerUserInfo info3 = PartnerUserInfo.builder().userId(4L).customerId(13L).partnerName("九派科技").partnerCommission(new BigDecimal(0.001).setScale(4,RoundingMode.HALF_DOWN)).build();
+        list.add(info1);
+        list.add(info2);
+        list.add(info3);
+        return partnerUserMapper.insertUpdateBeatchPartnerUserInfo(list);
+    }
 
     @GetMapping("/12")
     @ApiOperation("获取所有接入信息")
-    public BaseRestResponse getAppInfoAll(){
+    public BaseRestResponse getAppInfoAll() {
         return new BaseRestResponse(flowAppMapper.queryAll());
     }
 
@@ -95,6 +113,11 @@ public class TestController {
         BigDecimal decimal = new BigDecimal(123451200);
         BigDecimal bigDecimal = decimal.divide(new BigDecimal(10000)).setScale(4, RoundingMode.HALF_DOWN);
         System.out.println("bigDecimal = " + bigDecimal);
+
+        long lvar = 500;
+        long abs = Math.negateExact(lvar);
+        System.out.println("abs = " + abs);
+
     }
 
 }

+ 2 - 0
modules/admin/src/main/java/com/fire/admin/rest/UtilController.java

@@ -8,6 +8,7 @@ import com.fire.dto.response.BaseResponse;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 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.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -70,4 +71,5 @@ public class UtilController {
         return new BaseResponse();
     }
 
+
 }

+ 2 - 0
modules/admin/src/main/java/com/fire/admin/security/config/PreWebSecurityConfig.java

@@ -50,6 +50,8 @@ public class PreWebSecurityConfig extends WebSecurityConfigurerAdapter {
         return super.authenticationManagerBean();
     }
 
+
+
     /**
      * 配置策略
      *

+ 24 - 0
modules/admin/src/main/java/com/fire/admin/service/PartnerUserService.java

@@ -0,0 +1,24 @@
+package com.fire.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fire.dto.PartnerUserInfo;
+
+/**
+ * @Description: TODO 客户中间人service
+ * @ClassName: PartnerUserService
+ * @Author: liuliu
+ * @Date: 2021/7/6 11:13
+ */
+public interface PartnerUserService extends IService<PartnerUserInfo> {
+
+
+    /***
+     *@description: TODO 删除中间人关联关系
+     * @param partnerUserInfo
+     *@return: int
+     *@author: liuliu
+     *@date: 2021-07-06 11:15
+     */
+    int removePartnerUserInfo(PartnerUserInfo partnerUserInfo);
+
+}

+ 94 - 11
modules/admin/src/main/java/com/fire/admin/service/impl/AdditionalPaymentServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fire.admin.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -17,6 +19,7 @@ import com.fire.common.exception.BaseException;
 import com.fire.common.redis.RedisAmountScript;
 import com.fire.dto.AdditionalPayment;
 import com.fire.dto.CustomerInfo;
+import com.fire.dto.TransactionFlow;
 import com.fire.dto.enums.Status;
 import com.fire.utils.date.DateUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -27,13 +30,19 @@ import org.springframework.stereotype.Service;
 import redis.clients.jedis.JedisCluster;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
 import static com.fire.common.constants.RocketTags.SUPPLIER_TAG;
+import static com.fire.common.constants.RocketTopic.TRANSACTION_TOPIC;
 import static com.fire.common.constants.RocketTopic.UPDATE_TOPIC;
 import static com.fire.dto.enums.RedisKey.*;
+import static com.fire.dto.enums.RelationType.RELATION_CUSTOMER;
+import static com.fire.dto.enums.ServiceType.SERVICE_FINANCE_ADD;
+import static com.fire.dto.enums.ServiceType.SERVICE_FINANCE_SUB;
 
 /**
  * @author: liuliu
@@ -45,15 +54,13 @@ import static com.fire.dto.enums.RedisKey.*;
 @Service
 public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentMapper, AdditionalPayment> implements AdditionalPaymentService {
 
-    private AliyunOSSUtil aliyunOSSUtil;
     private RedisAmountScript redisAmountScript;
     private CustomerService customerService;
     private JedisCluster jedisCluster;
     private RocketMQTemplate rocketMQTemplate;
 
     @Autowired
-    public AdditionalPaymentServiceImpl(AliyunOSSUtil aliyunOSSUtil, RedisAmountScript redisAmountScript, CustomerService customerService, JedisCluster jedisCluster, RocketMQTemplate rocketMQTemplate) {
-        this.aliyunOSSUtil = aliyunOSSUtil;
+    public AdditionalPaymentServiceImpl(RedisAmountScript redisAmountScript, CustomerService customerService, JedisCluster jedisCluster, RocketMQTemplate rocketMQTemplate) {
         this.redisAmountScript = redisAmountScript;
         this.customerService = customerService;
         this.jedisCluster = jedisCluster;
@@ -69,15 +76,34 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
      */
     @Override
     public void insertAdditionalPaymen(AdditionalPaymentDto additionalPaymentDto) {
+        // TODO 获取当前操作的人的用户名
+        String username = SecurityUtil.getUser().getUsername();
+
         if (additionalPaymentDto.getType().equals("customer")) {
             additionalPaymentDto.setId(jedisCluster.incr(GLOBAL_ID_INCR.key()));
             additionalPaymentDto.setDistinguish(2);
+
             // TODO 客户加款
-            int count = this.additionalPayment(additionalPaymentDto);
+            int count = this.additionalPayment(additionalPaymentDto, username);
+
+            // TODO 构建流水实体对象,并转换为 json
+            JSONObject param = JSONUtil.parseObj(createTransactionFlow(
+                    Long.parseLong(jedisCluster.hget(CUSTOMER_AMOUNT.key(), CUSTOMER_AMOUNT.key().concat(additionalPaymentDto.getRelationId()))),
+                    additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue(),
+                    RELATION_CUSTOMER.type(),
+                    Long.parseLong(additionalPaymentDto.getRelationId()),
+                    DateUtils.strformatDatetime(LocalDateTime.now()).concat(" ".concat(username).concat(" 为客户".concat(additionalPaymentDto.getCustomerName())).concat("加款,加款金额为:")).concat(additionalPaymentDto.getAmount().setScale(4, RoundingMode.DOWN).toString()),
+                    additionalPaymentDto.getCustomerName(),
+                    username,
+                    SERVICE_FINANCE_ADD.type()
+            ));
             // TODO 加款操作
             Long amount = redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.parseLong(additionalPaymentDto.getRelationId()), "add", additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue(), 0L);
+
             if (count > 0 && ObjectUtil.isNotEmpty(amount)) {
-                log.info("客户加款成功,客户编号为:【{}】,加款金额为:【{}】", additionalPaymentDto.getRelationId(), additionalPaymentDto.getAmount());
+                log.info("客户加款成功,客户编号为:【{}】,客户名称为:【{}】,加款金额为:【{}】", additionalPaymentDto.getRelationId(),param.get("name"), additionalPaymentDto.getAmount());
+                log.info("加款入流水队列,加款之前的金额为:【{}】,操作金额为:【{}】,加款之后的金额为:【{}】,详情为:【{}】", new BigDecimal(param.get("beforeAmount").toString()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN), additionalPaymentDto.getAmount(), new BigDecimal(param.get("afterAmount").toString()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN), param);
+                rocketMQTemplate.syncSend(TRANSACTION_TOPIC, MessageBuilder.withPayload(param).build());
             } else {
                 // TODO 客户加款失败,删除该条加款记录
                 log.info("加款失败,加款编号为:【{}】将删除此条记录,客户编号为:【{}】,加款金额为:【{}】", additionalPaymentDto.getId(), additionalPaymentDto.getRelationId(), additionalPaymentDto.getAmount());
@@ -87,7 +113,7 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
             additionalPaymentDto.setId(jedisCluster.incr(GLOBAL_ID_INCR.key()));
             additionalPaymentDto.setDistinguish(1);
             //  供应商加款
-            int count = this.additionalPayment(additionalPaymentDto);
+            int count = this.additionalPayment(additionalPaymentDto, username);
             Long amount = redisAmountScript.changeAmount(SUPPLIER_AMOUNT.key(), Long.parseLong(additionalPaymentDto.getRelationId()), "add", additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue(), 0L);
             if (count > 0 && ObjectUtil.isNotEmpty(amount)) {
                 rocketMQTemplate.send(UPDATE_TOPIC + ":" + SUPPLIER_TAG, MessageBuilder.withPayload(SUPPLIER_TAG).build());
@@ -101,6 +127,48 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
 
     }
 
+    /***
+     *@description: TODO 构建流水对象
+     * @param beforeAmount: 供应商可用金额
+     * @param amount : 加款或者撤销的金额
+     * @param distinguish : 1、客户;2、供应商
+     * @param relationId : 供应商或者客户编号
+     * @param note : 描述
+     * @param name : 客户或者供应商名称
+     *@return: com.fire.dto.TransactionFlow
+     *@author: liuliu
+     *@date: 2021-07-07 16:28
+     */
+    private TransactionFlow createTransactionFlow(Long beforeAmount, Long amount, Integer distinguish, Long relationId, String note, String name, String username, Integer serviceType) {
+
+        if (ObjectUtil.isNotEmpty(amount) && amount > 0) {
+            Long afterAmount = null;
+            // TODO 加款后金额的计算
+            if (serviceType.equals(SERVICE_FINANCE_ADD.type())) {
+                afterAmount = new BigDecimal(beforeAmount).add(new BigDecimal(amount)).longValue();
+            }
+            // TODO 款项册小后金额的计算
+            if (serviceType.equals(SERVICE_FINANCE_SUB.type())) {
+                afterAmount = new BigDecimal(beforeAmount).add(new BigDecimal(Math.negateExact(amount))).longValue();
+            }
+            TransactionFlow flow = TransactionFlow.builder().seqNo(jedisCluster.incr(GLOBAL_ID_INCR.key()))
+                    .createTime(new Date())
+                    .serviceType(serviceType)
+                    .beforeAmount(beforeAmount)
+                    .afterAmount(afterAmount)
+                    .operatingAmount(amount)
+                    .distinguish(distinguish)
+                    .relationId(relationId)
+                    .note(note)
+                    .orderId(null)
+                    .name(name)
+                    .operatorName(username)
+                    .build();
+            return flow;
+        }
+        return null;
+    }
+
     /**
      * @Description: TODO  客户和供应商加款共用和方法
      * @Param: [additionalPaymentDto]
@@ -108,7 +176,7 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
      * @Author: liuliu
      * @Date: 2021/6/7 16:12
      */
-    private int additionalPayment(AdditionalPaymentDto additionalPaymentDto) {
+    private int additionalPayment(AdditionalPaymentDto additionalPaymentDto, String username) {
 
         if (ObjectUtil.isNotEmpty(additionalPaymentDto.getType()) && ObjectUtil.isNotEmpty(additionalPaymentDto.getRelationId())) {
             AdditionalPayment payment = AdditionalPayment.builder()
@@ -116,7 +184,7 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
                     .cardNo(additionalPaymentDto.getCardNo())
                     .bankDeposit(additionalPaymentDto.getBankDeposit())
                     .account(additionalPaymentDto.getAccount())
-                    .payer(SecurityUtil.getUser().getUsername())
+                    .payer(username)
                     .amount(additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue())
                     .certificate(additionalPaymentDto.getCertificate())
                     .time(DateUtils.strformatDatetime(LocalDateTime.now()))
@@ -203,7 +271,8 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
      */
     @Override
     public String cancelAdditionalPayment(AdditionalPaymentDto additionalPaymentDto) {
-
+        // TODO 账户册小操作人
+        String username = SecurityUtil.getUser().getUsername();
         log.info("撤销参数为:【{}】", JSONUtil.parseObj(additionalPaymentDto));
         AdditionalPayment payment = this.formatAdditionalPaymentDto(additionalPaymentDto);
         // TODO  客户的撤销
@@ -214,13 +283,28 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
             if (additionalPayment.getId().equals(payment.getId())) {
                 // TODO 获取客户授信金额
                 CustomerInfo customerInfo = customerService.getcustomerOne(Long.parseLong(payment.getRelationId()));
+                // TODO 构建撤销的对象
+                JSONObject param = JSONUtil.parseObj(createTransactionFlow(
+                        Long.parseLong(jedisCluster.hget(CUSTOMER_AMOUNT.key(), CUSTOMER_AMOUNT.key().concat(payment.getRelationId()))),
+                        payment.getAmount(),
+                        RELATION_CUSTOMER.type(),
+                        Long.parseLong(payment.getRelationId()),
+                        DateUtils.strformatDatetime(LocalDateTime.now()).concat(" ".concat(username).concat(" 为客户".concat(payment.getRelationId())).concat("款项撤销,撤销金额为:")).concat(additionalPaymentDto.getAmount().divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN).toString()),
+                        additionalPaymentDto.getCustomerName(),
+                        username,
+                        SERVICE_FINANCE_SUB.type()
+                ));
 
                 // TODO 进行账户撤销
                 Long amount = redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.parseLong(payment.getRelationId()), "sub", payment.getAmount(), customerInfo.getCreditAmount());
                 if (ObjectUtil.isNotEmpty(amount)) {
                     // TODO 修改记录的撤销状态
                     baseMapper.updateById(payment);
-                    log.info("客户款项撤销。 客户编号为:【{}】 撤销金额为:【{}】 ,授信额度为:【{}】 剩余额度为:【{}】", payment.getRelationId(), additionalPaymentDto.getAmount(), new BigDecimal(customerInfo.getCreditAmount()).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN), new BigDecimal(amount).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN));
+                    // TODO 获取撤销的具体金额
+                    BigDecimal canceprice = additionalPaymentDto.getAmount().divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN);
+                    log.info("客户款项撤销入流水队列,撤销之前的金额为:【{}】,操作金额为:【{}】,撤销之后的金额为:【{}】,详情为:【{}】", new BigDecimal(param.get("beforeAmount").toString()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN), canceprice, new BigDecimal(param.get("afterAmount").toString()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN), param);
+                    log.info("客户款项撤销。 客户编号为:【{}】,客户名称为:【{}】 撤销金额为:【{}】 ,授信额度为:【{}】 剩余额度为:【{}】", payment.getRelationId(),param.get("name"), canceprice, new BigDecimal(customerInfo.getCreditAmount()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN), new BigDecimal(amount).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN));
+                    rocketMQTemplate.syncSend(TRANSACTION_TOPIC, MessageBuilder.withPayload(param).build());
                     return payment.getRelationId().concat("_").concat(amount.toString());
                 } else {
                     // TODO 撤销失败的处理
@@ -231,7 +315,6 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
                 log.info("撤销失败,撤销不能撤销当前客户最近一次的加款记录。如果非要撤销请先加款一次再撤销本次记录");
                 throw new BaseException("577", "撤销失败");
             }
-
         } else if (ObjectUtil.isNotEmpty(additionalPaymentDto.getRelationId()) && additionalPaymentDto.getType().equals("supplier")) {
             payment.setUndo(1);
             AdditionalPayment additionalPayment = getAdditionalPaymentOne(additionalPaymentDto.getDistinguish(), additionalPaymentDto.getRelationId(), additionalPaymentDto.getId());

+ 36 - 3
modules/admin/src/main/java/com/fire/admin/service/impl/CustomerServiceImpl.java

@@ -2,6 +2,7 @@ package com.fire.admin.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fire.admin.dto.CustomerDto;
 import com.fire.admin.mapper.CustomerMapper;
 import com.fire.admin.mapper.FlowAppMapper;
+import com.fire.admin.mapper.PartnerUserMapper;
 import com.fire.admin.service.BankCardService;
 import com.fire.admin.service.CustomerService;
 import com.fire.admin.util.SecurityUtil;
@@ -17,6 +19,7 @@ import com.fire.common.exception.BaseException;
 import com.fire.dto.BankCard;
 import com.fire.dto.CustomerInfo;
 import com.fire.dto.FlowAppInfo;
+import com.fire.dto.PartnerUserInfo;
 import com.fire.dto.enums.Status;
 import com.fire.utils.date.DateUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +35,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static com.fire.common.constants.RocketTags.CONSUMER_PRODUCT_TAG;
 import static com.fire.common.constants.RocketTopic.UPDATE_TOPIC;
@@ -57,10 +61,12 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, CustomerInf
     @Autowired
     private BankCardService bankCardService;
 
-
     @Resource
     private RocketMQTemplate rocketMQTemplate;
 
+    @Autowired
+    private PartnerUserMapper partnerUserMapper;
+
     /**
      * @Description: TODO 分页获取客户信息
      * @Param: 查询条件,根据客户名称模糊查询
@@ -74,11 +80,18 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, CustomerInf
         List<CustomerInfoVo> infoVos = customerInfoVoIPage.getRecords();
         if (!infoVos.isEmpty()) {
             infoVos.forEach(info -> {
+                // TODO 获取客户的可用金额
+                info.setBalance(new BigDecimal(jedisCluster.hget(CUSTOMER_AMOUNT.key(), CUSTOMER_AMOUNT.key().concat(info.getCustomerId().toString()))).divide(new BigDecimal(10000)).setScale(4, RoundingMode.DOWN));
                 // TODO  返回客户的银行卡信息
                 info.setBankCards(bankCardService.getBankCardList(info.getCustomerId(), 2));
                 if (ObjectUtil.isNotEmpty(info.getCreditAmount())) {
                     info.setCreditAmount(new BigDecimal(info.getCreditAmount()).divide(new BigDecimal(10000)).setScale(4, RoundingMode.HALF_DOWN).toString());
                 }
+                if (!info.getPartnerUsers().isEmpty()) {
+                    info.getPartnerUsers().forEach(partner -> {
+                        partner.setPartnerCommission((partner.getPartnerCommission().multiply(new BigDecimal(1000).setScale(0, RoundingMode.DOWN))));
+                    });
+                }
             });
         }
         return customerInfoVoIPage;
@@ -111,6 +124,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, CustomerInf
                 .createTime(DateUtils.strformatDatetime(LocalDateTime.now()))
                 .userId(customerDto.getUserId())
                 .priceCheck(customerDto.getPriceCheck()).build();
+        // TODO 新增中间人关联关系
+        if (!customerDto.getPartnerUsers().isEmpty()) {
+            customerDto.getPartnerUsers().forEach(info -> {
+                info.getPartnerCommission().divide(new BigDecimal(1000)).setScale(4, RoundingMode.DOWN);
+            });
+            partnerUserMapper.insertUpdateBeatchPartnerUserInfo(customerDto.getPartnerUsers());
+        }
+
         int count1 = baseMapper.insert(customerInfo);
         // TODO 新增客户接入
         FlowAppInfo appInfo = FlowAppInfo.builder()
@@ -177,7 +198,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, CustomerInf
                 .updateTime(DateUtils.strformatDatetime(LocalDateTime.now()))
                 .userId(customerDto.getUserId())
                 .priceCheck(customerDto.getPriceCheck()).build();
-
+        // TODO 修改客户中间人信息
+        if (!customerDto.getPartnerUsers().isEmpty()) {
+            customerDto.getPartnerUsers().forEach(info -> {
+                info.setPartnerCommission(info.getPartnerCommission().divide(new BigDecimal(1000)).setScale(4, RoundingMode.DOWN));
+            });
+            log.info("修改的中间人信息为:【{}】", JSONUtil.parse(customerDto.getPartnerUsers()));
+            partnerUserMapper.insertUpdateBeatchPartnerUserInfo(customerDto.getPartnerUsers());
+        }
         int count = baseMapper.updateById(customerInfo);
         List<BankCard> bankCards = customerDto.getBankCards();
         if (!bankCards.isEmpty()) {
@@ -207,9 +235,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, CustomerInf
     public List<CustomerInfo> queryCustomerInfo(String customerName) {
         LambdaQueryWrapper<CustomerInfo> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(CustomerInfo::getCustomerId, CustomerInfo::getCustomerName, CustomerInfo::getUserId)
+                .eq(CustomerInfo::getIsDeleted, 0)
                 .like(customerName != null, CustomerInfo::getCustomerName, customerName);
 
-        return baseMapper.selectList(queryWrapper);
+        List<CustomerInfo> customerInfos = baseMapper.selectList(queryWrapper);
+        // TODO 添加一个所有客户
+        CustomerInfo info = CustomerInfo.builder().customerId(0L).customerName("所有客户").build();
+        customerInfos.add(0, info);
+        return customerInfos;
 
     }
 

+ 38 - 6
modules/admin/src/main/java/com/fire/admin/service/impl/OperatorMaintenanceServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fire.admin.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,7 +13,10 @@ import com.fire.admin.util.SecurityUtil;
 import com.fire.admin.vo.OperatorMaintenanceVo;
 import com.fire.common.exception.BaseException;
 import com.fire.dto.OperatorMaintenance;
+import com.fire.dto.OperatorMaintennaceCustomer;
 import com.fire.dto.enums.Status;
+import com.fire.utils.date.DateUtils;
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.springframework.messaging.support.MessageBuilder;
@@ -22,6 +26,9 @@ import javax.annotation.Resource;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import static com.fire.common.constants.RocketTags.MAINTENANCE_TAG;
@@ -49,6 +56,8 @@ public class OperatorMaintenanceServiceImpl extends ServiceImpl<OperatorMaintena
      */
     @Override
     public int operatorMaintenanceServiceSaveOrUpdate(OperatorMaintenance operatorMaintenance) {
+
+        log.info("请求参数为:【{}】",JSONUtil.parse(operatorMaintenance));
         if (ObjectUtil.isNotEmpty(operatorMaintenance)) {
             // TODO 设置维护类型为手动
             if(!operatorMaintenance.getFacePrice().equals(0L)){
@@ -57,14 +66,31 @@ public class OperatorMaintenanceServiceImpl extends ServiceImpl<OperatorMaintena
         /*    if(operatorMaintenance.getFacePrice().toString().equals("所有面额")){
                 operatorMaintenance.setFacePrice(0L);
             }*/
-            operatorMaintenance.setOrderType(1);
-            operatorMaintenance.setCreateUser(SecurityUtil.getUser().getUsername());
-            operatorMaintenance.setModifyUser(SecurityUtil.getUser().getUsername());
 
-            operatorMaintenance.setProvince(EnumUtils.convert(operatorMaintenance.getProvince()));
 
-            log.info("添加的维护信息为:【{}】", operatorMaintenance.toString());
-            int count = baseMapper.saveOrUpdateOperatorMaintenance(operatorMaintenance);
+            // TODO 构建维护信息list
+            ArrayList<OperatorMaintenance> operatorMaintenanceArrayList = Lists.newArrayList();
+
+                    operatorMaintenance.getCustomerInfos().forEach(op->{
+                        OperatorMaintenance maintenance = OperatorMaintenance.builder()
+                                .operator(operatorMaintenance.getOperator())
+                                .facePrice(operatorMaintenance.getFacePrice())
+                                .province(EnumUtils.convert(operatorMaintenance.getProvince()))
+                                .orderType(1)
+                                .createUser("admin")
+                                .modifyUser("admin")
+                                .startTime(operatorMaintenance.getStartTime())
+                                .endTime(operatorMaintenance.getEndTime())
+                                .updateTime(DateUtils.strformatDatetime(LocalDateTime.now()))
+                                .rechargeType(operatorMaintenance.getRechargeType())
+                                .customerId(op.getCustomerId())
+                                .customerName(op.getCustomerName())
+                                .status(operatorMaintenance.getStatus()).build();
+                        operatorMaintenanceArrayList.add(maintenance);
+                    });
+
+            log.info("添加的维护信息为:【{}】", JSONUtil.parse(operatorMaintenanceArrayList));
+            int count = baseMapper.saveOrUpdateOperatorMaintenanceBeatch(operatorMaintenanceArrayList);
             if (count > 0) {
                 // TODO 发送维护信息更新到topic
                 rocketMQTemplate.send(UPDATE_TOPIC + ":" + MAINTENANCE_TAG, MessageBuilder.withPayload(MAINTENANCE_TAG).build());
@@ -103,6 +129,12 @@ public class OperatorMaintenanceServiceImpl extends ServiceImpl<OperatorMaintena
         if (ObjectUtil.isNotEmpty(records)) {
             records.forEach(operator -> {
                 operator.setProvince(EnumUtils.convertName(operator.getProvince()));
+               // TODO 设置客户名称
+                operator.setCustomerInfos( Collections.singletonList(
+                        OperatorMaintennaceCustomer.builder()
+                                .customerId(operator.getCustomerId())
+                                .customerName(operator.getCustomerName()).build()));
+
                 if (ObjectUtil.isNotEmpty(operator.getFacePrice()) && !operator.getFacePrice().equals("0")) {
                     operator.setFacePrice(new BigDecimal(operator.getFacePrice()).divide(new BigDecimal(10000)).toString());
                 }

+ 31 - 0
modules/admin/src/main/java/com/fire/admin/service/impl/PartnerUserServiceImpl.java

@@ -0,0 +1,31 @@
+package com.fire.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fire.admin.mapper.PartnerUserMapper;
+import com.fire.admin.service.PartnerUserService;
+import com.fire.dto.PartnerUserInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: TODO
+ * @ClassName: PartnerUserServiceImpl
+ * @Author: liuliu
+ * @Date: 2021/7/6 11:16
+ */
+@Service
+@Slf4j
+public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, PartnerUserInfo> implements PartnerUserService {
+
+    /***
+     *@description: TODO 删除中间人关联关系
+     * @param partnerUserInfo
+     *@return: int
+     *@author: liuliu
+     *@date: 2021-07-06 11:17
+     */
+    @Override
+    public int removePartnerUserInfo(PartnerUserInfo partnerUserInfo) {
+        return baseMapper.deletePartnerUserInfo(partnerUserInfo);
+    }
+}

+ 1 - 1
modules/admin/src/main/java/com/fire/admin/util/JwtUtil.java

@@ -47,7 +47,7 @@ public class JwtUtil {
     /**
      * 有效期1小时
      */
-    private static final long EXPIRE_TIME = 60 * 60 * 1000;
+    private static final long EXPIRE_TIME = 4 * 60 * 60 * 1000;
 
     @Value("${jwt.header:Authorization}")
     private String tokenHeader;

+ 4 - 0
modules/admin/src/main/java/com/fire/admin/vo/CustomerInfoVo.java

@@ -2,6 +2,7 @@ package com.fire.admin.vo;
 
 
 import com.fire.dto.BankCard;
+import com.fire.dto.PartnerUserInfo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -117,4 +118,7 @@ public class CustomerInfoVo {
     @ApiModelProperty("银行卡列表")
     private List<BankCard> bankCards;
 
+    @ApiModelProperty("中间人列表")
+    private List<PartnerUserInfo> partnerUsers;
+
 }

+ 12 - 0
modules/admin/src/main/java/com/fire/admin/vo/OperatorMaintenanceVo.java

@@ -1,9 +1,11 @@
 package com.fire.admin.vo;
 
+import com.fire.dto.OperatorMaintennaceCustomer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: TODO 运营商维护 view object
@@ -50,4 +52,14 @@ public class OperatorMaintenanceVo {
 
     @ApiModelProperty(value = "充值类型。默认为快充 快充:1  慢充:2")
     private Integer rechargeType;
+
+    @ApiModelProperty(value = "客户编号")
+    private Long customerId;
+
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+
+    @ApiModelProperty(value = "客户集合")
+    private List<OperatorMaintennaceCustomer> customerInfos;
+
 }

+ 5 - 0
modules/admin/src/main/resources/mapper/CustomerMapper.xml

@@ -55,9 +55,14 @@
         <result column="channel_id" property="channelId"/>
         <result column="price_check" property="priceCheck"/>
         <result column="user_id" property="userId"/>
+        <!-- 获取客户登录用户姓名 -->
         <collection property="loginName" ofType="java.lang.String"
                     select="com.fire.admin.mapper.SysUserMapper.getCustomerUserName"
                     column="user_id"/>
+        <!-- 客户中间人列表 -->
+        <collection property="partnerUsers" ofType="java.lang.Long"
+                    select="com.fire.admin.mapper.PartnerUserMapper.selectPartnerUserInfoByCustomerId"
+                    column="customer_id"/>
     </resultMap>
 
 

+ 58 - 34
modules/admin/src/main/resources/mapper/OperatorMaintennaceMapper.xml

@@ -15,6 +15,8 @@
         <result column="create_user" property="createUser"/>
         <result column="create_time" property="createTime"/>
         <result column="recharge_type" property="rechargeType"/>
+        <result column="customer_id" property="customerId"/>
+        <result column="customer_name" property="customerName"/>
     </resultMap>
 
     <resultMap id="ResultMap" type="com.fire.admin.vo.OperatorMaintenanceVo">
@@ -30,40 +32,57 @@
         <result column="create_user" property="createUser"/>
         <result column="create_time" property="createTime"/>
         <result column="recharge_type" property="rechargeType"/>
+        <result column="customer_id" property="customerId"/>
+        <result column="customer_name" property="customerName"/>
     </resultMap>
 
-    <insert id="saveOrUpdateOperatorMaintenance" parameterType="com.fire.dto.OperatorMaintenance">
+    <insert id="saveOrUpdateOperatorMaintenanceBeatch" parameterType="com.fire.dto.OperatorMaintenance">
         INSERT INTO operator_maintenance
-        (face_price,
-         oder_type,
-         operator,
-         province,
-         start_time,
-         end_time,
-         `status`,
-         modify_user,
-         recharge_type,
-         create_user)
-        VALUES (#{param.facePrice},
-                #{param.orderType},
-                #{param.operator},
-                #{param.province},
-                #{param.startTime},
-                #{param.endTime},
-                #{param.status},
-                #{param.modifyUser},
-                #{param.rechargeType},
-                #{param.createUser}) ON DUPLICATE KEY
-        UPDATE
-            face_price = #{param.facePrice},
-            oder_type=#{param.orderType},
-            operator= #{param.operator},
-            province=#{param.province},
-            start_time=#{param.startTime},
-            end_time=#{param.endTime},
-            `status`=#{param.status},
-            recharge_type=#{param.rechargeType},
-            modify_user=#{param.modifyUser}
+        (
+        face_price,
+        oder_type,
+        operator,
+        province,
+        start_time,
+        end_time,
+        `status`,
+        modify_user,
+        recharge_type,
+        update_time,
+        create_user,
+        customer_id,
+        customer_name
+        )
+        VALUES
+        <foreach collection="operatorMaintenances" item="param" index="index" separator=",">
+            (#{param.facePrice},
+            #{param.orderType},
+            #{param.operator},
+            #{param.province},
+            #{param.startTime},
+            #{param.endTime},
+            #{param.status},
+            #{param.modifyUser},
+            #{param.rechargeType},
+            #{param.updateTime},
+            #{param.createUser},
+            #{param.customerId},
+            #{param.customerName}
+            )
+        </foreach>
+        ON DUPLICATE KEY UPDATE
+        face_price = VALUES(face_price),
+        oder_type= VALUES(oder_type),
+        operator= VALUES(operator),
+        province= VALUES(province),
+        start_time= VALUES(start_time),
+        end_time= VALUES(end_time),
+        `status`= VALUES(`status`),
+        recharge_type= VALUES(recharge_type),
+        update_time= VALUES(update_time),
+        modify_user= VALUES(modify_user),
+        customer_id =VALUES(customer_id),
+        customer_name= VALUES(customer_name)
     </insert>
 
 
@@ -79,7 +98,9 @@
         update_time,
         create_user,
         recharge_type,
-        create_time
+        create_time,
+        customer_id,
+        customer_name
     </sql>
     <select id="selectOperatorMaintenancPage" resultMap="ResultMap">
         SELECT
@@ -99,7 +120,7 @@
             <if test="select.startTime != 'null' and select.startTime !=null  and select.startTime !='' ">
                 AND start_time &gt;= #{select.startTime}
             </if>
-            <if  test="select.endTime != null and select.endTime != 'null'  and select.endTime !=''">
+            <if test="select.endTime != null and select.endTime != 'null'  and select.endTime !=''">
                 AND end_time &lt;= #{select.endTime}
             </if>
             <if test="select.orderType !=null ">
@@ -111,8 +132,11 @@
             <if test="select.rechargeType !=null and  select.rechargeType !='' ">
                 AND recharge_type=#{select.rechargeType}
             </if>
+            <if test="select.customerId !=null and select.customerId !='' ">
+                AND customer_id=#{select.customerId}
+            </if>
         </where>
-        ORDER BY  start_time, oder_type,`status` DESC
+        ORDER BY start_time, oder_type,`status` DESC
     </select>
 
 </mapper>

+ 33 - 0
modules/admin/src/main/resources/mapper/PartnerUserMapper.xml

@@ -0,0 +1,33 @@
+<?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.fire.admin.mapper.PartnerUserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.fire.dto.PartnerUserInfo">
+        <result column="customer_id" property="customerId"/>
+        <result column="user_id" property="userId"/>
+        <result column="partner_name" property="partnerName"/>
+        <result column="partner_commission" property="partnerCommission"/>
+    </resultMap>
+
+
+<insert id="insertUpdateBeatchPartnerUserInfo" parameterType="java.util.List">
+    INSERT  INTO
+    partner_user_info
+    (customer_id,user_id,partner_name,partner_commission)
+    VALUE
+    <foreach collection="list" item="item" index="index" separator=",">
+        (
+            #{item.customerId},
+            #{item.userId},
+            #{item.partnerName},
+            #{item.partnerCommission}
+        )
+    </foreach>
+    ON DUPLICATE KEY UPDATE
+    partner_commission=VALUES(partner_commission);
+
+</insert>
+
+
+</mapper>