From 0f4459e4201fdc19185b7dd03215871f036acd70 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 28 五月 2025 16:45:01 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java |  198 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 insertions(+), 3 deletions(-)

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 7462917..22124d1 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
@@ -1,21 +1,47 @@
 package com.ruoyi.other.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.account.api.dto.GrantCouponDto;
 import com.ruoyi.account.api.feignClient.AppCouponClient;
 import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.CouponListVOVO;
 import com.ruoyi.account.api.vo.ExchangeRecordVO;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.log.enums.OperatorType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.other.api.domain.Region;
 import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TGoods;
 import com.ruoyi.other.api.dto.GoodsDTO;
 import com.ruoyi.other.query.CouponQuery;
+import com.ruoyi.other.service.IRegionService;
 import com.ruoyi.other.service.TActivityService;
 import com.ruoyi.other.service.TCouponService;
 import com.ruoyi.other.service.TGoodsService;
+import com.ruoyi.system.api.domain.SysUser;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
+
+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;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,24 +59,58 @@
 
     @Autowired
     private AppCouponClient appCouponClient;
+    
+    @Autowired
+    private IRegionService regionService;
+    
+    
+    
+    
+    
+
+    /**
+     * 远程调用 根据名称 查询优惠券ids
+     * @return
+     */
+    @PostMapping("/getCouponIdsByName/{name}")
+    public R<List<Integer>> getCouponIdsByName(@PathVariable("name")String name) {
+        List<Integer> collect = tCouponService.list(new QueryWrapper<TCoupon>()
+                .eq("name", name)).stream().map(TCoupon::getId).collect(Collectors.toList());
+        return R.ok(collect);
+    }
+    
+    
+    @RequiresPermissions(value = {"/coupon/add"}, logical = Logical.OR)
     @PostMapping("/saveGoods")
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券添加")
+    @Log(title = "【优惠券管理】添加优惠券", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
     public AjaxResult saveActivity(@RequestBody TCoupon dto) {
         tCouponService.save(dto);
         return AjaxResult.success();
     }
+    
+    
+    @RequiresPermissions(value = {"/coupon/del"}, logical = Logical.OR)
     @GetMapping("/delete")
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券删除")
-    public AjaxResult delete(Integer id) {
-        tCouponService.removeById(id);
+    @Log(title = "【优惠券管理】删除优惠券", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
+    public AjaxResult delete(String ids) {
+        tCouponService.removeBatchByIds(Arrays.asList(ids.split(",")));
         return AjaxResult.success();
     }
+    
+    
+    @RequiresPermissions(value = {"/coupon/update"}, logical = Logical.OR)
     @PostMapping("/updateVip")
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券修改")
+    @Log(title = "【优惠券管理】修改优惠券", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
     public AjaxResult updateActivity(@RequestBody TCoupon dto) {
         tCouponService.updateById(dto);
         return AjaxResult.success();
     }
+    
+    
+    @RequiresPermissions(value = {"/coupon/select"}, logical = Logical.OR)
     @GetMapping("/getInfo")
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情")
     public AjaxResult<TCoupon> getInfo(Integer id) {
@@ -61,16 +121,148 @@
         byId.setUseCount(appCouponClient.getUseCountByCouponId(id).getData());
         return AjaxResult.ok(byId);
     }
+    
+    
+    @RequiresPermissions(value = {"/coupon/select"}, logical = Logical.OR)
     @PostMapping("/exchangeRecord")
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情-兑换记录")
     public AjaxResult<PageInfo<ExchangeRecordVO>> exchangeRecord(@RequestBody ExchangeRecordGoodsQuery dto) {
+        List<ExchangeRecordVO> data = appCouponClient.getExchangeRecordByCouponId(dto).getData();
+        for (ExchangeRecordVO record : data) {
+            TCoupon byId = tCouponService.getById(record.getCouponId());
+            if (byId!=null){
+                if (byId.getDiscountAmount()!=null){
+                    record.setDiscountAmount("¥"+byId.getDiscountAmount());
 
-        return AjaxResult.ok(null);
+                }else{
+                    record.setDiscountAmount("¥"+byId.getMaximumDiscountAmount());
+                }
+                if (Objects.equals(byId.getMeetTheConditions(), BigDecimal.ZERO)){
+                    record.setMeetTheConditions("无门槛");
+                }else{
+                    record.setMeetTheConditions("满"+byId.getMeetTheConditions()+"元可用");
+                }
+                record.setCoverPicture(byId.getCoverPicture());
+                record.setDetailsPicture(byId.getDetailsPicture());
+            }
+        }
+        PageInfo<ExchangeRecordVO> exchangeRecordVOPageInfo = new PageInfo<>(1, 99999999);
+        exchangeRecordVOPageInfo.setRecords(data);
+        return AjaxResult.ok(exchangeRecordVOPageInfo);
     }
+    
+    
+    
+    @RequiresPermissions(value = {"/coupon/send"}, logical = Logical.OR)
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "发放优惠券")
+    @PostMapping(value = "/grantCoupon")
+    @Log(title = "【优惠券管理】发放优惠券", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
+    public AjaxResult grantCoupon(@RequestBody GrantCouponDto dto) {
+        TCoupon byId = tCouponService.getById(dto.getCouponId());
+        Integer waysToObtain = byId.getWaysToObtain();
+        dto.setWaysToObtain(waysToObtain);
+        switch (byId.getValidityPeriodMode()){
+            case 1:
+                dto.setEndTime(byId.getEndTime());
+                break;
+            case 2:
+                dto.setEndTime(LocalDateTime.now().plusDays(byId.getDays()));
+                break;
+        }
+        if (StringUtils.hasLength(dto.getProvinceCode())){
+            for (String s : dto.getProvinceCode().split(",")) {
+                Region code = regionService.getOne(new QueryWrapper<Region>()
+                        .eq("code", s));
+                List<String> collect = regionService.list(new QueryWrapper<Region>()
+                        .eq("parent_id", code.getId())).stream().map(Region::getCode).collect(Collectors.toList());
+                StringBuilder temp = new StringBuilder();
+                for (String string : collect) {
+                    temp.append(string).append(",");
+                }
+                if (StringUtils.hasLength(dto.getCityCode())){
+                    String s1 = dto.getCityCode() + "," + temp;
+                    // 去除最后一位字符
+                    dto.setCityCode(s1.substring(0, s1.length() - 1));
+                }else{
+                    String substring = temp.substring(0, temp.length() - 1);
+                    dto.setCityCode(substring);
+                }
+            }
+
+        }
+        appCouponClient.grantCoupon(dto);
+        return AjaxResult.success();
+    }
+    
+    
+    @RequiresPermissions(value = {"/coupon"}, logical = Logical.OR)
     @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询")
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) {
         return AjaxResult.ok(tCouponService.pageList(dto));
     }
+    
+    
+    @RequiresPermissions(value = {"/vipSetting/list"}, logical = Logical.OR)
+    @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);
+    }
+
+    /**
+     * 小程序远程调用 获取优惠券信息
+     */
+    @PostMapping(value = "/getCouponInfoByCouponIds")
+    public R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list) {
+        for (CouponListVOVO couponListVOVO : list) {
+            TCoupon byId = tCouponService.getById(couponListVOVO.getCouponId());
+            BeanUtils.copyProperties(byId,couponListVOVO);
+            couponListVOVO.setCouponName(byId.getName());
+        }
+        return R.ok(list);
+    }
+
+    /**
+     * 根据id获取优惠券信息
+     * @param id
+     * @return
+     */
+    @PostMapping(value = "/getCouponById1/{id}")
+    public R<TCoupon> getCouponById1(@PathVariable(value = "id") Integer id){
+        TCoupon coupon = tCouponService.getById(id);
+        return R.ok(coupon);
+    }
+
+    @PostMapping(value = "/getCouponById")
+    public R<TCoupon> getCouponById(@RequestParam("id") Integer id){
+        TCoupon coupon = tCouponService.getById(id);
+        return R.ok(coupon);
+    }
+    
+    
+    /**
+     * 修改优惠券
+     * @param coupon
+     * @return
+     */
+    @PostMapping(value = "/updateCoupon")
+    public R updateCoupon(@RequestBody TCoupon coupon){
+        tCouponService.updateById(coupon);
+        return R.ok();
+    }
 }
 

--
Gitblit v1.7.1