package com.ruoyi.user.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.user.domain.dto.MemberPurchaseDto; import com.ruoyi.user.domain.vo.MemberSalesStatisticsVo; import com.ruoyi.user.domain.vo.MemberWarehouseVo; import com.ruoyi.user.domain.vo.PurchaseOrderVo; import com.ruoyi.user.domain.vo.WarehouseRecordVo; import com.ruoyi.user.service.IAccountMemberCenterService; /** * C端会员 个人中心-会员中心接口 * * 网关前缀 /miniapp/account 由 StripPrefix=2 剥掉,故此处映射为 /user/member, * 外部实际路径为 /miniapp/account/user/member/**。 * * 会员身份取自网关注入的登录态(SecurityUtils.getUserId),不接受前端传 userId, * 天然防止水平越权;未登录请求由网关直接以 401 拦截,故此处不处理未登录分支。 * * @author hugray */ @RestController @RequestMapping("/user/member") public class AccountMemberController extends BaseController { @Autowired private IAccountMemberCenterService accountMemberCenterService; /** * 查询当前登录会员的销售统计 * * 返回当月销售额 / 进货额 / 利润(单位分)、利润环比、销售额趋势、商品销售额比例与销售用户排行。 * * @return 销售统计聚合对象 */ @GetMapping("/sales-statistics") public R salesStatistics() { return R.ok(accountMemberCenterService.getSalesStatistics(SecurityUtils.getUserId())); } /** * 查询当前登录会员的云仓列表 * * 含当前库存、最低需求库存与低库存标记;商品图片本期为空,由前端使用占位图。 * * @return 云仓列表 */ @GetMapping("/warehouses") public R> warehouses() { return R.ok(accountMemberCenterService.getWarehouseList(SecurityUtils.getUserId())); } /** * 进货:生成进货单并增加对应云仓库存 * * 云仓归属由服务端校验(非本会员商品拒绝),库存原子自增,同一事务内追加变动流水。 * * @param dto 进货入参(warehouseId、qty 必填) * @return 操作结果 */ @PostMapping("/purchase") public R purchase(@Validated @RequestBody MemberPurchaseDto dto) { accountMemberCenterService.purchase(SecurityUtils.getUserId(), dto); return R.ok(); } /** * 分页查询当前登录会员的云仓变动记录 * * 分页参数 pageNum 默认 1、pageSize 默认 10,按变动时间倒序。 * * @return 分页数据(rows 为变动记录,total 为总数) */ @GetMapping("/warehouse-records") public TableDataInfo warehouseRecords() { startPage(); List list = accountMemberCenterService.getWarehouseRecordList(SecurityUtils.getUserId()); return getDataTable(list); } /** * 分页查询当前登录会员的进货订单 * * 分页参数 pageNum 默认 1、pageSize 默认 10,按下单时间倒序。 * * @return 分页数据(rows 为进货订单,total 为总数) */ @GetMapping("/purchase-orders") public TableDataInfo purchaseOrders() { startPage(); List list = accountMemberCenterService.getPurchaseOrderList(SecurityUtils.getUserId()); return getDataTable(list); } }