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.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.Arrays;
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author 无关风月
|
* @since 2024-08-06
|
*/
|
@RestController
|
@RequestMapping("/t-coupon")
|
public class TCouponController {
|
@Autowired
|
private TCouponService tCouponService;
|
|
@Autowired
|
private AppCouponClient appCouponClient;
|
|
/**
|
* 远程调用 根据名称 查询优惠券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);
|
}
|
@PostMapping("/saveGoods")
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券添加")
|
public AjaxResult saveActivity(@RequestBody TCoupon dto) {
|
tCouponService.save(dto);
|
return AjaxResult.success();
|
}
|
|
|
|
@GetMapping("/delete")
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券删除")
|
public AjaxResult delete(String ids) {
|
tCouponService.removeBatchByIds(Arrays.asList(ids.split(",")));
|
return AjaxResult.success();
|
}
|
|
|
|
@PostMapping("/updateVip")
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券修改")
|
public AjaxResult updateActivity(@RequestBody TCoupon dto) {
|
tCouponService.updateById(dto);
|
return AjaxResult.success();
|
}
|
|
|
|
@GetMapping("/getInfo")
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情")
|
public AjaxResult<TCoupon> getInfo(Integer id) {
|
TCoupon byId = tCouponService.getById(id);
|
// 查询累计发放数量
|
byId.setCount(appCouponClient.getCountByCouponIds(String.valueOf(id)).getData().get(0));
|
// 查询累计使用数量
|
byId.setUseCount(appCouponClient.getUseCountByCouponId(id).getData());
|
return AjaxResult.ok(byId);
|
}
|
|
|
|
@PostMapping("/exchangeRecord")
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情-兑换记录")
|
public AjaxResult<PageInfo<ExchangeRecordVO>> exchangeRecord(@RequestBody ExchangeRecordGoodsQuery dto) {
|
PageInfo<ExchangeRecordVO> data = appCouponClient.getExchangeRecordByCouponId(dto).getData();
|
List<ExchangeRecordVO> records = data.getRecords();
|
for (ExchangeRecordVO record : records) {
|
TCoupon byId = tCouponService.getById(record.getCouponId());
|
if (byId!=null){
|
record.setDiscountAmount("¥"+byId.getDiscountAmount());
|
if (Objects.equals(byId.getMeetTheConditions(), BigDecimal.ZERO)){
|
record.setMeetTheConditions("无门槛");
|
}else{
|
record.setMeetTheConditions("满"+byId.getMeetTheConditions()+"元可用");
|
}
|
record.setCoverPicture(byId.getCoverPicture());
|
record.setDetailsPicture(byId.getDetailsPicture());
|
}
|
}
|
return AjaxResult.ok(data);
|
}
|
|
|
@Autowired
|
private IRegionService regionService;
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "发放优惠券")
|
@PostMapping(value = "/grantCoupon")
|
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();
|
}
|
|
@ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询")
|
@PostMapping(value = "/pageList")
|
public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) {
|
return AjaxResult.ok(tCouponService.pageList(dto));
|
}
|
|
/**
|
* 小程序远程调用 获取优惠券信息
|
*/
|
@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();
|
}
|
}
|