he2802 %!s(int64=2) %!d(string=hai) anos
pai
achega
bd64998ed2

+ 54 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/TelPhoneUtils.java

@@ -4,6 +4,9 @@ import com.zhongzheng.common.utils.spring.SpringUtils;
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 
+import java.io.IOException;
+import java.util.Random;
+
 /**
  * 手机号码工具栏
  *
@@ -11,6 +14,57 @@ import org.springframework.context.i18n.LocaleContextHolder;
  */
 public class TelPhoneUtils
 {
+    //中国移动
+    public static final String[] CHINA_MOBILE = {
+            "134", "135", "136", "137", "138", "139", "150", "151", "152", "157", "158", "159",
+            "182", "183", "184", "187", "188", "178", "147", "172", "198"
+    };
+    //中国联通
+    public static final String[] CHINA_UNICOM = {
+            "130", "131", "132", "145", "155", "156", "166", "171", "175", "176", "185", "186", "166"
+    };
+    //中国电信
+    public static final String[] CHINA_TELECOME = {
+            "133", "149", "153", "173", "177", "180", "181", "189", "199"
+    };
+
+    /**
+     * 生成手机号
+     */
+    public static String createMobile() {
+        StringBuilder sb = new StringBuilder();
+        Random random = new Random();
+        int op = random.nextInt(3);//随机运营商标志位
+        String mobileThree;//手机号前三位
+        int temp;
+        switch (op) {
+            case 0:
+                mobileThree = CHINA_MOBILE[random.nextInt(CHINA_MOBILE.length)];
+                break;
+            case 1:
+                mobileThree = CHINA_UNICOM[random.nextInt(CHINA_UNICOM.length)];
+                break;
+            case 2:
+                mobileThree = CHINA_TELECOME[random.nextInt(CHINA_TELECOME.length)];
+                break;
+            default:
+                mobileThree = "op标志位有误!";
+                break;
+        }
+        if (mobileThree.length() > 3) {
+            return mobileThree;
+        }
+        sb.append(mobileThree);
+        //生成手机号后8位
+        for (int i = 0; i < 8; i++) {
+            temp = random.nextInt(10);
+            sb.append(temp);
+        }
+        return sb.toString();
+    }
+
+
+
     /**
      * 隐藏手机号码
      * @param tel

+ 22 - 3
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -910,8 +910,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             }
             User user1 = getOne(new LambdaQueryWrapper<User>()
                     .eq(User::getTelphone,EncryptHandler.encrypt(bo.getTelphone())).last("limit 1"));
-            //手机号码存在
-            if(Validator.isNotEmpty(user1)){
+            //手机号码存在 身份证一致
+            if(Validator.isNotEmpty(user1) &&
+                    Validator.isNotEmpty(bo.getIdCard())&&Validator.isNotEmpty(user1.getIdCard())
+                    && EncryptHandler.decrypt(user1.getIdCard()).equals(bo.getIdCard())
+            ){
                 UserIdCardBatchVo user = BeanUtil.toBean(bo, UserIdCardBatchVo.class);
 //                if(Validator.isNotEmpty(bo.getIdCard())&&Validator.isNotEmpty(user1.getIdCard())&&!user1.getIdCard().equals(bo.getIdCard())){
 //                    throw new CustomException(bo.getRealname()+"身份证号码不一致");
@@ -937,7 +940,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                     }
                 }*/
                 UserSystemRegisterBo registerBo = BeanUtil.toBean(bo, UserSystemRegisterBo.class);
-                registerBo.setTel(bo.getTelphone());
+                if (Validator.isNotEmpty(user1)){
+                    //手机号码存在,身份证不一致 (随机生成)
+                    registerBo.setTel(createTel());
+                }else {
+                    registerBo.setTel(bo.getTelphone());
+                }
                 registerBo.setIdcard(bo.getIdCard());
                 registerBo.setRegisterPlat("4");
                 Long userId = systemRegisterUser(registerBo);
@@ -953,6 +961,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return list1;
     }
 
+    private String createTel() {
+        String mobile = TelPhoneUtils.createMobile();
+        int count = count(new LambdaQueryWrapper<User>()
+                .eq(User::getTelphone, EncryptHandler.encrypt(mobile)));
+        if (count > 0){
+            createTel();
+        }
+        return mobile;
+    }
+
+
     @Override
     public boolean editShareActivityCode(UserEditBo bo) {
         if (ObjectUtils.isNotNull(bo.getShareActivityCode())){

+ 41 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderInvoiceBo.java

@@ -0,0 +1,41 @@
+package com.zhongzheng.modules.order.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年05月23日 13:56
+ */
+@Data
+public class OrderInvoiceBo implements Serializable {
+
+    private String buyerName;
+
+    private String buyerTaxNum;
+
+    private String naturalPersonFlag;
+
+    private String orderNo;
+
+    private String invoiceDate;
+
+    private String salerTaxNum = "524400003364615059";
+
+    private String clerk = "吴建英";
+
+    private Integer pushMode = 0;
+
+    private String email;
+
+    private Integer invoiceType;
+
+    private String invoiceLine;
+
+    private String SalerTel = "020-87085982";
+
+    private String SalerAddress = "广东省广州市天河区燕岭路123号3楼";
+
+    private OrderInvoiceDetailBo invoiceDetail;
+}

+ 42 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderInvoiceDetailBo.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.modules.order.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年05月23日 13:56
+ */
+@Data
+public class OrderInvoiceDetailBo implements Serializable {
+
+    private String goodsName = "培训费";
+
+    private String withTaxFlag = "1";
+
+    private BigDecimal price;
+
+    private Integer num;
+
+    private String unit;
+
+    private String taxRate = "0.03";
+
+    private String dField1 = "";
+
+    private String dField2 = "";
+
+    private String dField3 = "";
+
+    private String dField4 = "";
+
+    private String dField5 = "";
+
+    private String goodsCode = "307020102";
+
+    private String favouredPolicyFlag;
+
+    private String favouredPolicyName = "简易征收";
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java

@@ -144,4 +144,8 @@ private static final long serialVersionUID=1L;
     /** 税率上一次记录 */
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private BigDecimal pretaxRecord;
+    /** 审核时间 */
+    private Long checkTime;
+    /** 账款结清时间 */
+    private Long creditTime;
 }

+ 19 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -487,6 +487,11 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         } else {
             add.setOrderUncollected(bo.getPayPrice().subtract(bo.getOrderReceived()));
         }
+
+        if (bo.getOrderReceived().compareTo(bo.getOrderPrice()) == 0){
+            //账款已结清
+            add.setCreditTime(DateUtils.getNowTime());
+        }
         this.save(add);
         //订单商品
         if (CollectionUtils.isNotEmpty(bo.getOrderGoodsList())) {
@@ -569,6 +574,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         } else {
             edit.setOrderUncollected(bo.getPayPrice().subtract(bo.getOrderReceived()));
         }
+        if (order.getOrderReceived().compareTo(order.getOrderPrice()) == 0){
+            //账款已结清
+            order.setCreditTime(DateUtils.getNowTime());
+        }
         //佣金计算
         if (ObjectUtils.isNotNull(bo.getPretaxBrokerage()) && ObjectUtils.isNotNull(bo.getPretax())){
             BigDecimal multiply = bo.getPretaxBrokerage().multiply(bo.getPretax());
@@ -810,10 +819,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             }
             order.setCheckRemark(bo.getOrderGoodsList().stream().map(x -> x.getSignId().toString()).collect(Collectors.joining(",")));
         }
-        //重新计算成本
-//        if (StringUtils.isNotBlank(order.getCostJson())) {
-//            recalculateCost(order.getCostJson(),order);
-//        }
+        if (order.getOrderReceived().compareTo(order.getOrderPrice()) == 0){
+            //账款已结清
+            order.setCreditTime(DateUtils.getNowTime());
+        }
         updateById(order);
 
         if (bo.getOrderBase() == 1) {
@@ -1014,7 +1023,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
         oldOrder.setCheckStatus(bo.getCheckStatus());
         oldOrder.setCheckBy(bo.getLoginName());
-
+        oldOrder.setCheckTime(DateUtils.getNowTime());
         LambdaQueryWrapper<TopOldOrderGoods> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(TopOldOrderGoods::getOrderSn, oldOrder.getOrderSn());
         wrapper.eq(TopOldOrderGoods::getStatus, 1);
@@ -2388,7 +2397,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             List<TopOldOrderGoods> orderGoodsList = topOrderGoodsService
                     .list(new LambdaQueryWrapper<TopOldOrderGoods>()
                             .eq(TopOldOrderGoods::getOrderSn, order.getOrderSn())
-                            .eq(TopOldOrderGoods::getCheckStatus,Arrays.asList(0,1))
+                            .in(TopOldOrderGoods::getCheckStatus,Arrays.asList(0,1))
                             .eq(TopOldOrderGoods::getStatus, 1));
             if (ObjectUtils.isNotNull(order.getPretaxBrokerage()) && order.getPretaxBrokerage().compareTo(BigDecimal.ZERO) != 0){
                 halveBrokerage = brokerage.divide(new BigDecimal(orderGoodsList.size()),4,BigDecimal.ROUND_DOWN);
@@ -3201,7 +3210,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         .eq(TopOldOrderGoods::getOrderSn,order.getOrderSn())
         .ne(TopOldOrderGoods::getCheckStatus,-1)
         .eq(TopOldOrderGoods::getStatus,1));
-
+        if (order.getOrderReceived().compareTo(order.getOrderPrice()) == 0){
+            //账款已结清
+            order.setCreditTime(DateUtils.getNowTime());
+        }
         return updateById(order);
     }