liujie
11 小时以前 fddf3d913d47f391f84f9e460cb76d427ef02c44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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<MemberSalesStatisticsVo> salesStatistics()
    {
        return R.ok(accountMemberCenterService.getSalesStatistics(SecurityUtils.getUserId()));
    }
 
    /**
     * 查询当前登录会员的云仓列表
     *
     * 含当前库存、最低需求库存与低库存标记;商品图片本期为空,由前端使用占位图。
     *
     * @return 云仓列表
     */
    @GetMapping("/warehouses")
    public R<List<MemberWarehouseVo>> warehouses()
    {
        return R.ok(accountMemberCenterService.getWarehouseList(SecurityUtils.getUserId()));
    }
 
    /**
     * 进货:生成进货单并增加对应云仓库存
     *
     * 云仓归属由服务端校验(非本会员商品拒绝),库存原子自增,同一事务内追加变动流水。
     *
     * @param dto 进货入参(warehouseId、qty 必填)
     * @return 操作结果
     */
    @PostMapping("/purchase")
    public R<Void> 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<WarehouseRecordVo> list = accountMemberCenterService.getWarehouseRecordList(SecurityUtils.getUserId());
        return getDataTable(list);
    }
 
    /**
     * 分页查询当前登录会员的进货订单
     *
     * 分页参数 pageNum 默认 1、pageSize 默认 10,按下单时间倒序。
     *
     * @return 分页数据(rows 为进货订单,total 为总数)
     */
    @GetMapping("/purchase-orders")
    public TableDataInfo purchaseOrders()
    {
        startPage();
        List<PurchaseOrderVo> list = accountMemberCenterService.getPurchaseOrderList(SecurityUtils.getUserId());
        return getDataTable(list);
    }
}