From cbbc18e79cb498901290451ecf5b9fdbd2a212aa Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期二, 24 九月 2024 18:43:47 +0800
Subject: [PATCH] 1.合伙人-手机号修改

---
 src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java       |    3 
 src/main/java/com/mzl/flower/service/payment/OrderService.java          |   79 ++++++++++++++++++-
 src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java  |   15 +++
 src/main/java/com/mzl/flower/service/partner/PartnerService.java        |   25 ++++++
 src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java   |    3 
 src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java |    7 +
 src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java    |   24 ++++++
 src/main/java/com/mzl/flower/web/partner/PartnerController.java         |   37 +++++++++
 src/main/resources/mapper/partner/PartnerMapper.xml                     |   11 ++
 9 files changed, 199 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java b/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
index 94cee52..21184cd 100644
--- a/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
@@ -37,4 +37,7 @@
 
     @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)")
     private Integer isEnabled;
+
+    @ApiModelProperty("注册手机号")
+    private String loginName;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java b/src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java
new file mode 100644
index 0000000..4486540
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java
@@ -0,0 +1,24 @@
+package com.mzl.flower.dto.request.partner;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UpdatePhoneDTO {
+
+    @ApiModelProperty(value = "用户名/手机号码", required = true)
+    private String username;
+
+    @ApiModelProperty(value = "短信验证码")
+    private String smsCode;
+
+    @ApiModelProperty(value = "图形验证码")
+    private String code;
+
+    @ApiModelProperty(value = "图形验证码id")
+    private String codeId;
+
+    @ApiModelProperty(value = "用户id")
+    private String id;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
index b71392a..ec9c2bc 100644
--- a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
@@ -71,4 +71,7 @@
     @ApiModelProperty("头像")
     private String cover;
 
+    @ApiModelProperty("注册手机号")
+    private String loginName;
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
index 131ee9a..cef30f4 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
@@ -74,4 +74,11 @@
 
     @ApiModelProperty(value = "真实成交总价格")
     private BigDecimal realTotal;
+
+    @ApiModelProperty(value = "商品ID")
+    private Long flowerId;//商品id
+
+    @ApiModelProperty(value = "供应商ID")
+    private Long supplierId;//商品id
+
 }
diff --git a/src/main/java/com/mzl/flower/service/partner/PartnerService.java b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
index 69a2141..5461de7 100644
--- a/src/main/java/com/mzl/flower/service/partner/PartnerService.java
+++ b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
@@ -20,6 +20,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -51,6 +52,10 @@
 
     @Resource
     private BaseService baseService;
+
+    @Autowired
+    private UserService userService;
+
 
     public PartnerService(PartnerMapper partnerMapper, UserMapper userMapper, WxMaService maService, UploadService uploadService) {
         this.partnerMapper = partnerMapper;
@@ -257,4 +262,24 @@
         partnerMapper.updateById(partner);
     }
 
+    @Transactional
+    public void phoneUpdate(UpdatePhoneDTO dto) {
+        Partner partner = partnerMapper.selectById(dto.getId());
+        if(partner==null){
+            throw new ValidationException("合伙人信息未登记");
+        }
+        User user = userService.getUserById(partner.getUserId());
+        if(user == null){
+            throw new ValidationException("用户不存在");
+        }
+        partner.setContactTel(dto.getUsername());
+        partner.update(SecurityUtils.getUserId());
+        partnerMapper.updateById(partner);
+
+        user.setTel(dto.getUsername());
+        user.setLoginName(dto.getUsername());
+        user.update(SecurityUtils.getUserId());
+        userMapper.updateById(user);
+
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 34d6b5b..3b76438 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -68,10 +68,8 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -1614,4 +1612,77 @@
 
 
     }
+
+    @Transactional
+    public String copyOrder(String id) {
+        List<OrderItem> ls = orderItemMapper.selectList(
+                new QueryWrapper<OrderItem>().eq("order_id", id));
+        StringBuilder sb=new StringBuilder();
+        ls.stream().forEach(orderItem -> {
+            Cart cart = null;
+            final Long flowerId = orderItem.getFlowerId();
+            final Integer num = orderItem.getNum();
+            final String userId=orderItem.getCreateBy();
+            // 查看当前的花是否已经下架
+            Flower flower = flowerMapper.selectById(flowerId);
+            // 查看当前的花的限购
+            final Integer limited = flower.getLimited();
+
+            // 查看当前购物车里面是否已经存在当前花
+            cart = cartMapper.selectOne(new QueryWrapper<Cart>()
+                    .eq("create_by", orderItem.getCreateBy()).eq("flower_id",flowerId));
+
+            if(null==cart){
+                cart = new Cart();
+                cart.setFlowerId(flowerId);
+                cart.setNum(0);
+                cart.create(orderItem.getCreateBy());
+            }
+
+            if (!flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())) {
+                sb.append(flower.getName() + "已下架");
+            }else if(flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())){
+                // 未下架库存逻辑控制
+                Integer tmpNum=cart.getNum()+num;
+                //查看当前的库存
+                if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) >= 0) {
+                    // 库存充足
+                    cart.setNum(tmpNum);
+                } else if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) < 0) {
+                    // 库存不足,剩多少给多少
+                    cart.setNum(flower.getStock());
+                    sb.append(flower.getName() + "购物车的总数超过库存,已调整成库存数!");
+                }else {
+                    sb.append(flower.getName() + "已无库存");
+                }
+
+                // 限购控制,如果当前的购物车的数量大于限购的话,则需要控制
+                if(null!=limited && limited>0){
+                    Integer buyedNum= getFlowerCompleteNumToday(userId,flowerId);
+                    Integer todayNum=cart.getNum()+buyedNum;
+                    //
+                    if(todayNum>limited){
+                        cart.setNum(limited-buyedNum<=0?0:limited-buyedNum);
+                        sb.append(flower.getName() + "购物车的总数超过限购,已调整成未限购数!");
+                    }
+                }
+
+            }
+
+            if(null!=cart){
+                // 插入购物车
+                if(null!=cart.getId()){
+                    // 新增
+                    cartMapper.updateById(cart);
+                }else{
+                   // 更新
+                    cartMapper.insert(cart);
+                }
+            }
+
+        });
+
+        return sb.toString();
+
+    }
 }
diff --git a/src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java b/src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java
index f76374b..a18d47f 100644
--- a/src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java
+++ b/src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java
@@ -148,4 +148,19 @@
         orderService.deleteOrder(id);
         return returnData(R.SUCCESS.getCode(), null);
     }
+
+
+
+
+
+    @GetMapping(value = "/copyOrder")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"),
+    })
+    @ApiOperation(value = "再来一单")
+    public ResponseEntity<ReturnDataDTO> copyOrder(String id) {
+        String message=orderService.copyOrder(id);
+        return returnData(R.SUCCESS.getCode(),null, message);
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/web/partner/PartnerController.java b/src/main/java/com/mzl/flower/web/partner/PartnerController.java
index 5e0fce5..61874dc 100644
--- a/src/main/java/com/mzl/flower/web/partner/PartnerController.java
+++ b/src/main/java/com/mzl/flower/web/partner/PartnerController.java
@@ -4,12 +4,19 @@
 import com.mzl.flower.base.BaseController;
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.base.cache.StringCacheClient;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.partner.*;
 import com.mzl.flower.dto.response.partner.PartnerDTO;
+import com.mzl.flower.entity.system.User;
 import com.mzl.flower.service.partner.PartnerService;
+import com.mzl.flower.service.system.UserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +31,13 @@
 public class PartnerController extends BaseController {
 
     private final PartnerService partnerService;
+
+    @Autowired
+    private StringCacheClient stringCacheClient;
+    public static final String SMS_CODE_KEY = "SMS-CODE-KEY";
+    public static final String TOKEN_KEY = "TOKEN-KEY";
+
+    public static final String SEPARATOR = ":";
 
     public PartnerController(PartnerService partnerService) {
         this.partnerService = partnerService;
@@ -92,4 +106,27 @@
         return returnData(R.SUCCESS.getCode(),null);
     }
 
+
+    @PostMapping("/phone/update")
+    @ApiOperation(value = "合伙人注册手机号修改", notes = "合伙人注册手机号修改")
+    public ResponseEntity<ReturnDataDTO> phoneUpdate(@Validated @RequestBody UpdatePhoneDTO dto) {
+        // TODO
+        String tel = dto.getUsername();
+        String smsCode = dto.getSmsCode();
+        if (StringUtils.isBlank(tel)) {
+            throw new ValidationException("手机号码不能为空");
+        }
+        if (StringUtils.isBlank(smsCode)) {
+            throw new ValidationException("手机验证码不能为空");
+        }
+        //从缓存中获取验证码
+        String smsCacheCode = stringCacheClient.get(SMS_CODE_KEY + SEPARATOR + Constants.USER_TYPE.admin.name() + SEPARATOR + tel);
+        if (!StringUtils.equals(smsCode, smsCacheCode)) {
+            throw new ValidationException("手机验证码不正确");
+        }
+
+        partnerService.phoneUpdate(dto);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
 }
diff --git a/src/main/resources/mapper/partner/PartnerMapper.xml b/src/main/resources/mapper/partner/PartnerMapper.xml
index 232cb24..7a33c98 100644
--- a/src/main/resources/mapper/partner/PartnerMapper.xml
+++ b/src/main/resources/mapper/partner/PartnerMapper.xml
@@ -3,13 +3,22 @@
 <mapper namespace="com.mzl.flower.mapper.partner.PartnerMapper">
 
     <select id="queryPartner" resultType="com.mzl.flower.dto.response.partner.PartnerDTO">
-        select * from t_partner_info t where t.deleted= 0
+        select t.* ,u.login_name
+        from t_partner_info t
+        left join t_user u
+        on t.user_id=u.id
+        and u.type='partner'
+        where t.deleted= 0
         <if test="dto.name!=null and dto.name!=''">
             AND t.name LIKE CONCAT('%',#{dto.name}, '%')
         </if>
         <if test="dto.tel!=null and dto.tel!=''">
             AND t.contact_tel LIKE CONCAT('%',#{dto.tel}, '%')
         </if>
+        <if test="dto.loginName!=null and dto.loginName!=''">
+            AND u.login_name LIKE CONCAT('%',#{dto.loginName}, '%')
+        </if>
+
         <if test="dto.status!=null and dto.status!=''">
             AND t.status = #{dto.status}
         </if>

--
Gitblit v1.9.3