From c436afe89419da51a5ce593ecd69d3a2f65c5faa Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 27 九月 2024 10:35:24 +0800
Subject: [PATCH] 对接邮箱 受理开票后发送

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java      |    7 ++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java               |    2 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml                  |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java                     |  120 ++++++++++++++++++++++++++++++++++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java         |    2 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml                       |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java           |   19 ++++++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java                    |    3 +
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml                          |    3 +
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/GoodsDTO.java                       |    2 
 11 files changed, 160 insertions(+), 2 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
index 44c70a3..b1e370b 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
@@ -105,7 +105,7 @@
     @TableField("remark")
     private String remark;
 
-    @ApiModelProperty(value = "状态(1=待发货,2=待收货,3=已完成,4=已取消)")
+    @ApiModelProperty(value = "状态(1=待发货,2=待收货,3=已完成,4=已取消 5=交易关闭)")
     @TableField("status")
     private Integer status;
 
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
index 541c529..beebeea 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
@@ -101,5 +101,8 @@
     @ApiModelProperty(value = "userUid")
     @TableField(exist = false)
     private String userUid;
+    @ApiModelProperty(value = "购买用户")
+    @TableField(exist = false)
+    private String userPhone;
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/GoodsDTO.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/GoodsDTO.java
index ea83f00..5f79b6b 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/GoodsDTO.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/GoodsDTO.java
@@ -14,6 +14,6 @@
     private String name;
     @ApiModelProperty(value = "1现金购买 2积分兑换 ")
     private Integer type;
-    @ApiModelProperty(value = "1全部 2已售罄 ")
+    @ApiModelProperty(value = "1全部 2已售罄 3已下架")
     private Integer otherState;
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
index 909cf73..16b02cc 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
@@ -70,6 +70,8 @@
     @PostMapping("/addVipOrder")
     @ApiOperation(value = "添加会员订单", tags = {"管理后台-会员订单"})
     public R<Long> addVipOrder(@RequestBody TVipOrder dto) {
+        List<TVipOrder> list = vipOrderService.lambdaQuery().eq(TVipOrder::getCode, dto.getCode()).list();
+        if (!list.isEmpty())return R.fail("订单编号已存在");
         vipOrderService.saveOrUpdate(dto);
         return R.ok(dto.getId());
     }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index 75e28c4..6141449 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -525,6 +525,7 @@
                     if (data1!=null){
                         tShoppingOrder.setName(data1.getName());
                     }
+                    tShoppingOrder.setStatus(3);
                     break;
             }
             if (tShoppingOrder.getAppUserId() != null){
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
index 2e2f137..0ed6754 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.dto.GiveVipDto;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.order.api.model.TShoppingOrder;
 import com.ruoyi.order.api.model.TVipOrder;
@@ -33,6 +35,8 @@
 
     @Resource
     private VipClient vipClient;
+    @Resource
+    private AppUserClient appUserClient;
     @Override
     public PageInfo<TVipOrder> pageList(VipShoppingOrderQuery query) {
         String startTime1 = null;
@@ -50,9 +54,12 @@
             tVipOrder.setUid(tVipOrder.getId().toString());
             tVipOrder.setUserUid(tVipOrder.getAppUserId().toString());
             TVip data = vipClient.getInfo(tVipOrder.getVipId()).getData();
+
             if (data!=null){
                 tVipOrder.setName(data.getName());
             }
+            TAppUser data1 = appUserClient.getUserById(tVipOrder.getAppUserId()).getData();
+            if (data1!=null)tVipOrder.setUserPhone(data1.getPhone());
         }
         pageInfo.setRecords(list);
         return pageInfo;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
new file mode 100644
index 0000000..a79ee1a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -0,0 +1,120 @@
+package com.ruoyi.order.util.task;
+
+import com.alibaba.fastjson2.util.UUIDUtils;
+import com.alibaba.nacos.common.utils.UuidUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.order.api.model.TChargingBill;
+import com.ruoyi.order.service.TChargingBillService;
+import org.apache.logging.log4j.core.util.UuidUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 8:39
+ */
+@Component
+public class TaskUtil {
+
+    @Resource
+    private TChargingBillService chargingBillService;
+    @Resource
+    private SiteClient siteClient;
+
+    public static void main(String[] args) {
+        LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
+                withDayOfMonth(2);
+        String string = firstDayOfLastMonth.toString();
+        // 将-替换为空字符串
+        string = string.replace("-", "");
+        System.err.println(string);
+    }
+    // 每月2号凌晨12点执行的定时任务
+    @Scheduled(cron = "0 0 0 2 * ?")
+    public void taskMonth() {
+        try {
+            // 获取上个月的开始和结束日期
+            LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
+                    withDayOfMonth(2);
+            String string = firstDayOfLastMonth.toString();
+            // 将-替换为空字符串
+            string = string.replace("-", "");
+            // 生成一次全站订单
+            TChargingBill tChargingBill = new TChargingBill();
+            // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
+            Random random = new Random();
+            String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+                    .mapToObj(String::valueOf)
+                    .collect(Collectors.joining()); // 将其连接成一个字符串
+            tChargingBill.setCode("JSD"+string+randomDigits+"001" );
+            tChargingBill.setType(1);
+            tChargingBill.setBillTime(LocalDateTime.now());
+            tChargingBill.setStatus(1);
+            tChargingBill.setOrderState(2);
+            chargingBillService.save(tChargingBill);
+            // 每月二号给每个站点生成上月账单
+            List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList());
+            List<TChargingBill> tChargingBills = new ArrayList<>();
+            for (int i = 1; i <= collect.size(); i++) {
+                TChargingBill tChargingBill1 = new TChargingBill();
+                Random random1 = new Random();
+                String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+                        .mapToObj(String::valueOf)
+                        .collect(Collectors.joining()); // 将其连接成一个字符串
+                tChargingBill1.setCode("JSD"+string+randomDigits1+i );
+                tChargingBill1.setType(2);
+                tChargingBill1.setSiteId(collect.get(i));
+                tChargingBill1.setBillTime(LocalDateTime.now());
+                tChargingBill1.setStatus(1);
+                tChargingBill1.setOrderState(2);
+                tChargingBills.add(tChargingBill1);
+            }
+            if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    // 每个月最后一天23点执行的定时任务
+    @Scheduled(cron = "0 0 23 L * ?")
+    public void taskLastDay() {
+        try {
+            // 获取上个月的开始和结束日期
+            LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
+                    withDayOfMonth(1);
+            LocalDate lastDayOfLastMonth = LocalDate.now().minusMonths(1).
+                    withDayOfMonth(firstDayOfLastMonth.lengthOfMonth());
+            // 将 LocalDate 转换为 LocalDateTime,并设定时间为一天的开始
+            LocalDateTime startDateTime = firstDayOfLastMonth.atStartOfDay();
+            LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒
+            // 构建查询条件
+            LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.ge(TChargingBill::getBillTime,
+                            Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()))
+                    .le(TChargingBill::getBillTime,
+                            Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录
+            List<TChargingBill> list = chargingBillService.list(queryWrapper);
+            for (TChargingBill tChargingBill : list) {
+                tChargingBill.setStatus(2);
+            }
+            chargingBillService.updateBatchById(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
index d19a9f2..1ef90a5 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
@@ -255,6 +255,7 @@
         </if>
         and t1.payment_status = 2
         AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        order by t1.create_time desc
     </select>
     <select id="sixBefore" resultType="com.ruoyi.order.dto.SixShopDto">
         SELECT
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
index 70127f8..ca0b516 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
@@ -44,7 +44,9 @@
         <if test="startTime1 != null and startTime1!=''">
             and (t1.create_time between #{startTime1} and #{startTime2}
         </if>
+        and t1.payment_status = 2
         AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        order by t1.create_time desc
     </select>
     <select id="sixBefore" resultType="com.ruoyi.order.dto.SixVipDto">
         SELECT
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
index 07d4925..9a00b7d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -35,6 +35,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -180,6 +181,24 @@
     public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) {
         return AjaxResult.ok(tCouponService.pageList(dto));
     }
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询")
+    @PostMapping(value = "/pageList3")
+    public AjaxResult<List<TCoupon>> pageList() {
+        List<TCoupon> tCoupons = new ArrayList<>();
+
+        List<TCoupon> list = tCouponService.lambdaQuery().eq(TCoupon::getStatus, 1)
+                .orderByDesc(TCoupon::getCreateTime).list();
+        for (TCoupon tCoupon : list) {
+            if (tCoupon.getValidityPeriodMode()==1){
+                if (LocalDateTime.now().isBefore(tCoupon.getEndTime())){
+                    tCoupons.add(tCoupon);
+                }
+            }else{
+                tCoupons.add(tCoupon);
+            }
+        }
+        return AjaxResult.ok(tCoupons);
+    }
 
     /**
      * 小程序远程调用 获取优惠券信息
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
index fb2632b..8cb9cb5 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
@@ -45,6 +45,9 @@
             <if test="req.otherState != null and req.otherState == 2">
                 AND  inventory = 0
             </if>
+            <if test="req.otherState != null and req.otherState ==3">
+                AND  status = #{req.status}
+            </if>
             AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
         </where>
         ORDER BY create_time DESC

--
Gitblit v1.7.1