添加用户端接口

This commit is contained in:
gong
2025-12-18 18:27:20 +08:00
parent c0a958579c
commit 9a7256b82c
4 changed files with 141 additions and 51 deletions

View File

@@ -2,10 +2,14 @@ package com.czg.controller.admin;
import com.alibaba.fastjson2.JSONObject;
import com.czg.annotation.SaAdminCheckPermission;
import com.czg.market.service.PpPackageOrderService;
import com.czg.market.service.PpPackageService;
import com.czg.market.vo.PpOrderListVO;
import com.czg.market.vo.PpPackagePageReqVo;
import com.czg.market.vo.PpPackageVO;
import com.czg.order.dto.GbOrderQueryParam;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
@@ -29,6 +33,9 @@ public class PpPackageController {
@Resource
private PpPackageService ppPackageService;
@Resource
private PpPackageOrderService ppPackageOrderService;
/**
* 添加套餐
*/
@@ -51,22 +58,26 @@ public class PpPackageController {
/**
* 删除套餐
* 如果返回值大于0则删除失败存在进行中的订单请继续调用确认删除套餐接口
*/
@DeleteMapping("/{id}")
@SaAdminCheckPermission(parentName = "套餐推广", value = "market:package:delete", name = "删除套餐")
public CzgResult<Long> deletePackage(@PathVariable Long id) {
public CzgResult<Boolean> deletePackage(@PathVariable Long id) {
return CzgResult.success(ppPackageService.deletePackage(id));
}
/**
* 确认删除套餐
* 上下架套餐
* 参数: {"status": 1, "packageId": 123}
*/
@DeleteMapping("/sure/{id}")
@SaAdminCheckPermission(parentName = "套餐推广", value = "market:package:sureDelete", name = "确认删除套餐")
public CzgResult<Void> sureDeletePackage(@PathVariable Long id) {
ppPackageService.sureDeletePackage(id);
return CzgResult.success();
@PutMapping("/switch")
@SaAdminCheckPermission(parentName = "套餐推广", value = "market:package:switch", name = "上下架套餐")
public CzgResult<Boolean> switchPackage(@RequestBody JSONObject param) {
AssertUtil.isNull(param, "参数错误");
Integer status = param.getInteger("status");
Long packageId = param.getLong("packageId");
AssertUtil.isNull(status, "参数错误");
AssertUtil.isNull(packageId, "参数错误");
return CzgResult.success(ppPackageService.updateOnlineStatus(packageId, status));
}
/**
@@ -100,6 +111,15 @@ public class PpPackageController {
Integer status = param.getInteger("status");
AssertUtil.isNull(status, "参数错误");
log.info("修改套餐推广开关 status == {}", status);
return CzgResult.success(ppPackageService.updatePackagePromotionSwitch(status));
return CzgResult.success(ppPackageService.updatePackagePromotionSwitch(status, StpKit.USER.getShopId()));
}
/**
* 获取套餐推广订单列表
*/
@GetMapping("/order")
@SaAdminCheckPermission(parentName = "套餐推广", value = "market:package:order", name = "获取套餐推广订单列表")
public CzgResult<Page<PpOrderListVO>> getPackageOrderList(GbOrderQueryParam reqVo) {
return CzgResult.success(ppPackageOrderService.queryOrderList(StpKit.USER.getShopId(), null, reqVo));
}
}

View File

@@ -0,0 +1,73 @@
package com.czg.controller.user;
import com.czg.market.dto.PpPackageOrderDTO;
import com.czg.market.service.PpPackageOrderService;
import com.czg.market.service.PpPackageService;
import com.czg.market.vo.PpOrderListVO;
import com.czg.market.vo.PpPackagePageReqVo;
import com.czg.market.vo.PpPackageVO;
import com.czg.order.dto.GbOrderQueryParam;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用户端/套餐推广
*
* @author yjjie
* @date 2025/12/18 18:03
*/
@RestController
@RequestMapping("/user/package")
public class UPpPackageController {
@Resource
private PpPackageService ppPackageService;
@Resource
private PpPackageOrderService ppPackageOrderService;
/**
* 获取套餐列表
*/
@GetMapping
public CzgResult<Page<PpPackageVO>> getPackageList(PpPackagePageReqVo reqVo) {
return CzgResult.success(ppPackageService.getPackagePage(reqVo, false));
}
/**
* 获取我的订单列表
*/
@GetMapping("/order")
public CzgResult<Page<PpOrderListVO>> getMyOrderList(GbOrderQueryParam reqVo) {
return CzgResult.success(ppPackageOrderService.queryOrderList(null, StpKit.USER.getLoginIdAsLong(), reqVo));
}
/**
* 取消订单
*/
@GetMapping("/cancel")
public CzgResult<Boolean> cancelOrder(Long orderId) {
return CzgResult.success(ppPackageOrderService.cancelOrder(orderId));
}
/**
* 助力订单
*/
@GetMapping("/help")
public CzgResult<Boolean> helpOrder(Long orderId) {
return CzgResult.success(ppPackageOrderService.helpOrder(orderId));
}
/**
* 获取订单详情
*/
@GetMapping("/order/detail")
public CzgResult<PpPackageOrderDTO> getOrderDetail(Long orderId) {
return CzgResult.success(ppPackageOrderService.getOrderDetailById(orderId));
}
}

View File

@@ -22,7 +22,7 @@ public interface PpPackageService extends IService<PpPackage> {
/**
* 更新套餐开关
*/
boolean updatePackagePromotionSwitch(Integer status);
boolean updatePackagePromotionSwitch(Integer status, Long shopId);
/**
* 插入套餐
@@ -37,12 +37,9 @@ public interface PpPackageService extends IService<PpPackage> {
/**
* 删除套餐
*/
long deletePackage(Long id);
boolean deletePackage(Long id);
/**
* 确认删除套餐
*/
void sureDeletePackage(Long id);
boolean updateOnlineStatus(Long id, Integer onlineStatus);
/**
* 获取套餐分页

View File

@@ -15,15 +15,13 @@ import com.czg.market.vo.PpPackagePageReqVo;
import com.czg.market.vo.PpPackageVO;
import com.czg.sa.StpKit;
import com.czg.service.market.mapper.PpPackageMapper;
import com.czg.service.market.mapper.PpPackageOrderMapper;
import com.czg.utils.AssertUtil;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -40,16 +38,11 @@ import java.util.List;
@Service
public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage> implements PpPackageService {
@Resource
private PpPackageOrderMapper ppPackageOrderMapper;
@DubboReference
private ShopInfoService shopInfoService;
@DubboReference
private ShopConfigService shopConfigService;
@Autowired
private PpPackageMapper ppPackageMapper;
@Override
public Integer getPackagePromotionSwitch() {
@@ -59,8 +52,8 @@ public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage
@Override
@Transactional
public boolean updatePackagePromotionSwitch(Integer status) {
Long shopId = StpKit.USER.getShopId();
@CacheEvict(cacheNames = "shopInfo", key = "#shopId")
public boolean updatePackagePromotionSwitch(Integer status, Long shopId) {
ShopConfig shopConfig = new ShopConfig();
shopConfig.setIsPackagePromotion(status);
boolean update = shopConfigService.update(shopConfig, QueryWrapper.create().eq(ShopConfig::getId, shopId));
@@ -90,13 +83,8 @@ public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage
throw new CzgException("名称已存在");
}
ppPackage = BeanUtil.copyProperties(packageVO, PpPackage.class);
ppPackage = getEntityFromDto(packageVO);
ppPackage.setShopId(shopId);
ppPackage.setPackageContent(JSONArray.toJSONString(packageVO.getPackageContent()));
ppPackage.setUseWeeks(JSONArray.toJSONString(packageVO.getUseWeeks()));
ppPackage.setTieredDiscount(JSONArray.toJSONString(packageVO.getTieredDiscount()));
ppPackage.setImages(JSONArray.toJSONString(packageVO.getImages()));
ppPackage.setDetailImages(JSONArray.toJSONString(packageVO.getDetailImages()));
save(ppPackage);
}
@@ -115,17 +103,13 @@ public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage
throw new CzgException("无权限");
}
ppPackage = BeanUtil.copyProperties(packageVO, PpPackage.class);
ppPackage.setPackageContent(JSONArray.toJSONString(packageVO.getPackageContent()));
ppPackage.setUseWeeks(JSONArray.toJSONString(packageVO.getUseWeeks()));
ppPackage.setTieredDiscount(JSONArray.toJSONString(packageVO.getTieredDiscount()));
ppPackage.setImages(JSONArray.toJSONString(packageVO.getImages()));
ppPackage = getEntityFromDto(packageVO);
updateById(ppPackage);
}
@Override
@Transactional
public long deletePackage(Long id) {
public boolean deletePackage(Long id) {
Long shopId = StpKit.USER.getShopId();
PpPackage ppPackage = getPackageById(id);
@@ -134,26 +118,32 @@ public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage
throw new RuntimeException("无权限");
}
QueryWrapper wrapper = QueryWrapper.create().eq(PpPackageOrder::getPackageId, id)
.eq(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.PROCESSING);
long orderCount = ppPackageMapper.selectCountByQuery(wrapper);
if (orderCount > 0) {
return orderCount;
}
cancelProgressingPackageOrder(StpKit.USER.getShopId(), id);
ppPackage.setIsDel(1);
updateById(ppPackage);
return 0L;
ppPackage.setIsDel(SystemConstants.OneZero.ONE);
return updateById(ppPackage);
}
@Override
@Transactional
public void sureDeletePackage(Long id) {
PpPackage ppPackage = getPackageById(id);
ppPackage.setIsDel(1);
updateById(ppPackage);
public boolean updateOnlineStatus(Long id, Integer onlineStatus) {
if (!SystemConstants.OneZero.ZERO.equals(onlineStatus) && !SystemConstants.OneZero.ONE.equals(onlineStatus)) {
throw new CzgException("参数错误");
}
Long shopId = StpKit.USER.getShopId();
cancelProgressingPackageOrder(StpKit.USER.getShopId(), id);
PpPackage ppPackage = getPackageById(id);
if (!ppPackage.getShopId().equals(shopId)) {
throw new RuntimeException("无权限");
}
if (SystemConstants.OneZero.ZERO.equals(onlineStatus)) {
cancelProgressingPackageOrder(StpKit.USER.getShopId(), id);
}
ppPackage.setOnlineStatus(onlineStatus);
return updateById(ppPackage);
}
@Override
@@ -242,4 +232,14 @@ public class PpPackageServiceImpl extends ServiceImpl<PpPackageMapper, PpPackage
.eq(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.PROCESSING)
.update();
}
public PpPackage getEntityFromDto(PpPackageVO packageVO) {
PpPackage ppPackage = BeanUtil.copyProperties(packageVO, PpPackage.class);
ppPackage.setPackageContent(JSONArray.toJSONString(packageVO.getPackageContent()));
ppPackage.setUseWeeks(JSONArray.toJSONString(packageVO.getUseWeeks()));
ppPackage.setTieredDiscount(JSONArray.toJSONString(packageVO.getTieredDiscount()));
ppPackage.setImages(JSONArray.toJSONString(packageVO.getImages()));
ppPackage.setDetailImages(JSONArray.toJSONString(packageVO.getDetailImages()));
return ppPackage;
}
}