无关风月
2025-01-11 8093bf217b5dbe59a5703b013f3fc79ed0d4fc36
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.ruoyi.other.controller;
 
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
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.service.TokenService;
import com.ruoyi.other.api.domain.Technician;
import com.ruoyi.other.api.domain.TechnicianScore;
import com.ruoyi.other.service.TechnicianScoreService;
import com.ruoyi.other.service.TechnicianService;
import com.ruoyi.other.vo.TechnicianDetailVO;
import com.ruoyi.other.vo.TechnicianVO;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
 
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author luodangjia
 * @since 2024-11-20
 */
@RestController
@RequestMapping("/technician")
@Api("技师")
public class TechnicianController extends BaseController {
    @Resource
    private TechnicianService technicianService;
    @Resource
    private TechnicianScoreService technicianScoreService;
    @Resource
    private TokenService tokenService;
    @Resource
    private SysUserClient sysUserClient;
 
 
 
 
 
    /**
     * 指定门店技师列表
     */
    @GetMapping("/technicianListByShopId")
    @ApiOperation(value = "技师列表", tags = {"技师列表-小程序"})
    public R<TableDataInfo<TechnicianVO>> technicianListByShopId(@ApiParam("门店id") @RequestParam Long shopId,@ApiParam("技师姓名") String name) {
        startPage();
        List<TechnicianVO> technicianListByShopId = technicianService.getTechnicianListByShopId(shopId, name);
        TableDataInfo<TechnicianVO> dataTable = getDataTable(technicianListByShopId);
        return R.ok(dataTable);
    }
 
    @GetMapping("/manage/list")
    @ApiOperation(value = "技师列表", tags = {"门店-技师列表"})
    public R<Page<Technician>> managelist(@RequestParam Integer pageNum,@RequestParam Integer pageSize,@ApiParam("技师姓名") String name,@ApiParam("技师电话") String phone) {
        Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
        Page<Technician> page = technicianService.lambdaQuery().like(name != null, Technician::getName, name)
                .like(phone != null, Technician::getPhone, phone)
                .eq(Technician::getShopId, objectId)
                .page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
 
    @Resource
    private AppUserClient appUserClient;
    @PostMapping("/manage/addorupdate")
    @ApiOperation(value = "添加编辑", tags = {"门店-技师列表"})
    public R<Page<Technician>> add(@RequestBody Technician technician) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        if (technician.getId()==null) {
            technician.setSubscribeStatus(2);
            List<Technician> list = technicianService.lambdaQuery().eq(Technician::getPhone, technician.getPhone()).eq(Technician::getShopId, sysUser.getObjectId()).list();
            if (!list.isEmpty()) {
                return R.fail("当前号码已经添加");
            }
            R<AppUser> appUserByPhone1 = appUserClient.getAppUserByPhone1(technician.getPhone());
            if (appUserByPhone1.getData()==null){
                return R.fail("当前号码暂无注册用户");
            }
        }else {
            Technician byId = technicianService.getById(technician.getId());
            if (byId.getPhone()!=technician.getPhone()){
                List<Technician> list = technicianService.lambdaQuery().eq(Technician::getPhone, technician.getPhone()).eq(Technician::getShopId, sysUser.getObjectId()).list();
                if (!list.isEmpty()) {
                    return R.fail("当前号码已经添加");
                }
                R<AppUser> appUserByPhone1 = appUserClient.getAppUserByPhone1(technician.getPhone());
                if (appUserByPhone1.getData()==null){
                    return R.fail("当前号码暂无注册用户");
                }
            }
        }
        technician.setShopId(sysUser.getObjectId());
        R<AppUser> appUserByPhone1 = appUserClient.getAppUserByPhone1(technician.getPhone());
        if (appUserByPhone1.getData()!=null){
            technician.setAppUserId(appUserByPhone1.getData().getId());
        }
        technicianService.saveOrUpdate(technician);
        return R.ok();
    }
    @GetMapping("/manage/delete")
    @ApiOperation(value = "删除", tags = {"门店-技师列表"})
    public R<Page<Technician>> delete(@RequestParam Integer id) {
        technicianService.removeById(id);
        return R.ok();
    }
    @GetMapping("/manage/changeStatus")
    @ApiOperation(value = "上下架", tags = {"门店-技师列表"})
    public R<Page<Technician>> changeStatus(@RequestParam Integer id,@RequestParam@ApiParam("状态(1=下架,2=上架)") Integer status) {
        Technician byId = technicianService.getById(id);
        byId.setStatus(status);
        technicianService.updateById(byId);
        return R.ok();
    }
    @GetMapping("/manage/changesubscri")
    @ApiOperation(value = "修改预约状态", tags = {"门店-技师列表"})
    public R<Page<Technician>> changesubscri(@RequestParam Integer id,@RequestParam@ApiParam("预约状态(1=可预约,2=不可预约)") Integer subscribeStatus) {
        Technician byId = technicianService.getById(id);
        byId.setSubscribeStatus(subscribeStatus);
        technicianService.updateById(byId);
        return R.ok();
    }
 
 
 
 
 
    @GetMapping("/getById")
    @ApiOperation(value = "技师详情", tags = {"技师详情-小程序","门店-技师列表"})
    public R<Technician> getById(@RequestParam("id") Integer id){
        Technician byId = technicianService.getById(id);
        return R.ok(byId);
    }
 
    /**
     * 技师详情
     */
    @GetMapping("/technicianDetail")
    @ApiOperation(value = "技师详情", tags = {"技师详情-小程序"})
    public R<TechnicianDetailVO> technicianDetail(@ApiParam("技师id") @RequestParam Long technicianId) {
        return R.ok(technicianService.technicianDetail(technicianId));
    }
 
    /**
     * 打分
     */
    @PostMapping("/grade")
    @ApiOperation(value = "打分", tags = {"打分-小程序"})
    public R<Void> grade(@RequestBody TechnicianScore technicianScore) {
        Long userid = tokenService.getLoginUserApplet().getUserid();
        TechnicianScore technicianScoreServiceOne = technicianScoreService.getOne(new LambdaQueryWrapper<TechnicianScore>()
                .eq(TechnicianScore::getAppUserId, userid)
                .eq(TechnicianScore::getTechnicianId, technicianScore.getTechnicianId()));
        if (technicianScoreServiceOne != null) {
            return R.fail("已打过分,无法再次打分");
        }
        technicianScore.setAppUserId(userid);
        technicianScoreService.save(technicianScore);
        return R.ok();
    }
 
 
    /**
     * 根据技师ids查询数据
     * @param ids
     * @return
     */
    @PostMapping("/getTechnicianByIds")
    public R<List<Technician>> getTechnicianByIds(@RequestParam("ids") Collection<Integer> ids){
        List<Technician> technicians = technicianService.listByIds(ids);
        return R.ok(technicians);
    }
}