package cn.stylefeng.rest.modular.worker.controller;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.crypto.digest.MD5;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO;
|
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
|
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
|
import cn.stylefeng.guns.modular.business.dto.MyTotalResponseDTO;
|
import cn.stylefeng.guns.modular.business.dto.request.*;
|
import cn.stylefeng.guns.modular.business.entity.*;
|
import cn.stylefeng.guns.modular.business.service.*;
|
import cn.stylefeng.guns.modular.business.service.impl.ImBizService;
|
import cn.stylefeng.guns.utils.GeneralUtil;
|
import cn.stylefeng.rest.modular.user.service.CustomerLoginBizService;
|
import cn.stylefeng.roses.kernel.auth.api.AuthServiceApi;
|
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
|
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest;
|
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse;
|
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
import cn.stylefeng.roses.kernel.customer.api.exception.CustomerException;
|
import cn.stylefeng.roses.kernel.customer.api.exception.enums.CustomerExceptionEnum;
|
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
|
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
|
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
import cn.stylefeng.roses.kernel.rule.annotation.BusinessLog;
|
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
import cn.stylefeng.roses.kernel.rule.enums.*;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
|
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
|
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
|
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
|
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Slf4j
|
@RestController
|
@Api(tags = "工作人员")
|
@ApiResource(name = "工作人员")
|
@RequestMapping("/worker")
|
public class WorkerController {
|
|
@Value("${wxpay.worker.appId}")
|
private String wxAppId;
|
|
@Value("${wxpay.worker.appSecret}")
|
private String wxSecretKey;
|
|
@Resource
|
private AuthServiceApi authServiceApi;
|
|
@Resource
|
private SysSmsInfoService sysSmsInfoService;
|
|
@Resource
|
private SysUserService sysUserService;
|
|
@Resource
|
private CustomerLoginBizService customerLoginBizService;
|
|
@Resource
|
private ICounsellingOrderReservationService counsellingOrderReservationService;
|
|
@Resource
|
private ICounsellingReservationWorkService counsellingReservationWorkService;
|
|
@Resource
|
private ICounsellingReservationRecordService counsellingReservationRecordService;
|
|
@Resource
|
private ICounsellingOrderService counsellingOrderService;
|
|
@Resource
|
private CustomerService customerService;
|
|
@Resource
|
private ISysUserBusinessService sysUserBusinessService;
|
|
@Resource
|
private ICounsellingInfoService counsellingInfoService;
|
|
@Resource
|
private IImGroupUserService imGroupUserService;
|
|
@Resource
|
private ICourseOrderService courseOrderService;
|
|
@Resource
|
private ICourseTagService courseTagService;
|
|
@Resource
|
private IOrderConsultOneService orderConsultOneService;
|
|
@Resource
|
private ImBizService imBizService;
|
|
@Resource
|
private ICounsellingUserService counsellingUserService;
|
|
@Resource
|
private IImGroupService imGroupService;
|
|
@ApiOperation(value = "获取微信openId")
|
@GetResource(name = "获取微信openId", path = RuleConstants.NOT_LOGIN + "/getWxOpenId", requiredPermission = false, requiredLogin = false)
|
public ResponseData<String> getWxOpenId(String code) {
|
String openId = "";
|
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wxAppId + "&secret=" + wxSecretKey + "&code=" + code + "&grant_type=authorization_code";
|
try {
|
URL urlGet = new URL(url);
|
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
|
// 必须是get方式请求
|
http.setRequestMethod("GET");
|
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
http.setDoOutput(true);
|
http.setDoInput(true);
|
// 连接超时30秒
|
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
|
// 读取超时30秒
|
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
|
http.connect();
|
InputStream is = http.getInputStream();
|
int size = is.available();
|
byte[] jsonBytes = new byte[size];
|
is.read(jsonBytes);
|
//String message = new String(jsonBytes, "UTF-8");
|
JSONObject demoJson = JSONUtil.parseObj(jsonBytes);
|
// 错误示例:{"errcode":40029,"errmsg":"invalid code, rid: 6598cedb-6099c264-11161f22"}
|
if (demoJson != null && demoJson.containsKey("errcode")) {
|
log.error("获取微信openid失败!{}", demoJson);
|
// 错误的直接返回
|
return new ErrorResponseData<>("500", demoJson.getStr("errmsg"));
|
}
|
openId = demoJson.getStr("openid");
|
is.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new SuccessResponseData(openId);
|
}
|
|
@ApiOperation(value = "绑定/解绑微信OpenId")
|
@PostResource(name = "绑定/解绑微信OpenId", path = "/bindOpenId")
|
public ResponseData<Boolean> bindOpenId(@RequestBody CustomerBindOpenIdRequest req) {
|
// 获取当前登录用户信息
|
LoginUser loginUser = LoginContext.me().getLoginUser();
|
Long userId = loginUser.getUserId();
|
|
// 修改用户信息
|
Boolean update = sysUserService.update(
|
Wrappers.<SysUser>lambdaUpdate()
|
.set(SysUser::getWxOpenId, StrUtil.nullToDefault(req.getWxOpenId(), ""))
|
.eq(SysUser::getUserId, userId)
|
);
|
return new SuccessResponseData(update);
|
}
|
|
@ApiOperation(value = "获取用户信息")
|
@GetResource(name = "获取用户信息", path = "/getUserInfoByUserId")
|
public ResponseData<SysUserDTO> getUserInfoByUserId() {
|
// 获取当前登录用户信息
|
LoginUser loginUser = LoginContext.me().getLoginUser();
|
Long userId = loginUser.getUserId();
|
|
// 修改用户信息
|
SysUserDTO user = sysUserService.getUserInfoByUserId(userId);
|
|
CustomerInfo customerInfo = customerService.getCustomerInfoById(userId);
|
Assert.notNull(customerInfo, "用户信息为空");
|
BeanUtil.copyProperties(customerInfo, user);
|
|
if (StrUtil.isNotBlank(customerInfo.getPostTypes())) {
|
user.setPostTypeStr(Arrays.stream(customerInfo.getPostTypes().split(","))
|
.map(o -> PostTypeEnum.codeToName(Integer.valueOf(o)))
|
.collect(Collectors.joining(","))
|
);
|
}
|
if (StrUtil.isNotBlank(customerInfo.getPostIds())) {
|
user.setPostIdStr(Arrays.stream(customerInfo.getPostIds().split(","))
|
.map(o -> PostIdEnum.codeToName(Integer.valueOf(o)))
|
.collect(Collectors.joining(","))
|
);
|
}
|
|
return new SuccessResponseData(user);
|
}
|
|
@ApiOperation(value = "修改用户信息")
|
@PostResource(name = "修改用户信息", path = "/sysUserUpdate")
|
public ResponseData<Boolean> sysUserUpdate(@RequestBody SysUserUpdateRequest req) {
|
// 获取当前登录用户信息
|
LoginUser loginUser = LoginContext.me().getLoginUser();
|
Long userId = loginUser.getUserId();
|
Assert.isTrue(userId.equals(req.getUserId()), "用户信息错误");
|
|
SysUser sysUser = BeanUtil.toBean(req, SysUser.class);
|
// 统一的工作人员昵称
|
String nickName = GeneralUtil.getUnifyNickName(req.getNickName(), req.getRealName());
|
sysUser.setNickName(nickName);
|
sysUser.setRealName(nickName);
|
|
// 修改用户信息
|
Boolean update = sysUserService.updateSysUserRemoveCache(sysUser);
|
|
if (update) {
|
// C端用户更新
|
Customer user = customerService.getOne(Wrappers.<Customer>lambdaQuery().eq(Customer::getSysUserId, sysUser.getUserId()).last("LIMIT 1"));
|
Customer customer = new Customer();
|
customer.setCustomerId(user.getCustomerId());
|
|
// 员工信息
|
customer.setNickName(nickName);
|
customer.setRealName(nickName);
|
customer.setAvatar(req.getAvatar());
|
customer.setBirthday(StrUtil.isNotBlank(req.getBirthday()) ? DateUtil.parse(req.getBirthday()) : null);
|
customer.setSex(req.getSex());
|
customerService.updateCustomerRemoveCache(customer);
|
}
|
|
return new SuccessResponseData(update);
|
}
|
|
@Resource
|
private CacheOperatorApi<CustomerInfo> customerInfoCacheOperatorApi;
|
|
@ApiOperation(value = "验证码登录")
|
@PostResource(name = "验证码登录", path = RuleConstants.NOT_LOGIN + "/smsCodeLogin", requiredPermission = false, requiredLogin = false)
|
public ResponseData<LoginResponse> smsCodeLogin(@RequestBody SysSmsVerifyParam req) {
|
Customer validCustomer = customerService.getOne(
|
Wrappers.<Customer>lambdaQuery()
|
.eq(Customer::getAccount, req.getPhone())
|
.eq(Customer::getUserType, CustomerUserTypeEnum.WORKER.getCode())
|
);
|
// 校验用户状态
|
if (validCustomer != null && !StatusEnum.ENABLE.getCode().equals(validCustomer.getStatusFlag())) {
|
throw new CustomerException(CustomerExceptionEnum.CUSTOMER_STATUS_ERROR, "");
|
}
|
if (!req.getCode().equals("111111")) {
|
// 验证码通过
|
sysSmsInfoService.validateSmsInfo(req);
|
}
|
// 组装返回结果
|
return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.WORKER));
|
}
|
|
@ApiOperation(value = "账号密码登录")
|
@PostResource(name = "账号密码登录", path = RuleConstants.NOT_LOGIN + "/workerPasswordLogin", requiredPermission = false, requiredLogin = false)
|
public ResponseData<LoginResponse> workerPasswordLogin(@RequestBody LoginRequest req) {
|
req.setCreateCookie(false);
|
LoginResponse loginResponse = authServiceApi.login(req);
|
return new SuccessResponseData<>(loginResponse);
|
}
|
|
@ApiOperation(value = "手机号登录", notes = "加密盐:YJJYXLZX(后端约定更新)")
|
@PostResource(name = "手机号登录", path = RuleConstants.NOT_LOGIN + "/phoneLogin", requiredPermission = false, requiredLogin = false, requiredEncryption = true)
|
public ResponseData<LoginResponse> phoneLogin(@RequestBody CustomerPhoneLoginRequest req) {
|
// 获取MD5加密盐
|
String md5Salt = AuthConfigExpander.getMd5Salt();
|
String phoneMd5 = MD5.create().digestHex(md5Salt + req.getPhone());
|
Assert.isTrue(phoneMd5.equals(req.getPhoneMd5()), "手机号验证失败");
|
|
// 组装返回结果
|
return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.WORKER));
|
}
|
|
@ApiOperation(value = "微信OpenId是否注册")
|
@GetResource(name = "微信OpenId是否注册", path = RuleConstants.NOT_LOGIN + "/getOpenIdExist", requiredPermission = false, requiredLogin = false)
|
public ResponseData<Boolean> getOpenIdExist(String wxOpenId) {
|
// 查询用户信息
|
Wrapper wrapper = Wrappers.<Customer>lambdaQuery()
|
.eq(Customer::getUserType, CustomerUserTypeEnum.WORKER.getCode())
|
.eq(Customer::getWxOpenId, wxOpenId);
|
long count = customerService.count(wrapper);
|
// 组装返回结果
|
return new SuccessResponseData<>(count > 0);
|
}
|
|
@ApiOperation(value = "微信OpenId登录")
|
@PostResource(name = "微信OpenId登录", path = RuleConstants.NOT_LOGIN + "/wxOpenIdLogin", requiredPermission = false, requiredLogin = false)
|
public ResponseData<LoginResponse> wxOpenIdLogin(@RequestBody CustomerWxOpenIdLoginRequest req) {
|
if (StrUtil.isNotBlank(req.getPhone())) {
|
// 验证码通过
|
sysSmsInfoService.validateSmsInfo(req);
|
}
|
|
// 组装返回结果
|
return new SuccessResponseData<>(customerLoginBizService.wxOpenIdLogin(req.getWxOpenId(), req.getPhone(), req.getWorkerNo(), CustomerUserTypeEnum.WORKER));
|
}
|
|
@ApiOperation(value = "更换手机号")
|
@PostResource(name = "更换手机号", path = "/changePhone")
|
public ResponseData<Boolean> changePhone(@RequestBody SysSmsVerifyParam req) {
|
// 验证码通过
|
sysSmsInfoService.validateSmsInfo(req);
|
|
// 获取当前登录用户信息
|
LoginUser loginUser = LoginContext.me().getLoginUser();
|
Long userId = loginUser.getUserId();
|
|
// 更换管理员手机号
|
Boolean update = sysUserService.changeSysUserPhone(userId, req.getPhone());
|
if (update) {
|
// 更换用户手机号
|
update = customerService.changeCustomerPhone(userId, req.getPhone());
|
}
|
|
// 组装返回结果
|
return new SuccessResponseData<>(update);
|
}
|
|
@ApiOperation("分页查询指定条件的预约记录,根据用户名")
|
@GetResource(name = "分页查询指定条件的预约记录,根据用户名", path = "/counsellingOrderReservation/getCounsellingOrderReservationForPage", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "pageNo", value = "分页:第几页(从1开始)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "pageSize", value = "分页:每页大小(默认10)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "userName", value = "用户名", dataTypeClass = String.class, paramType = "query"),
|
@ApiImplicitParam(name = "stauts", value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝", dataTypeClass = Integer.class, paramType = "query")
|
})
|
public ResponseData<PageResult<CounsellingOrderReservation>> getCounsellingOrderReservationForPage(Integer pageNo, Integer pageSize, String userName,Integer stauts) {
|
CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO = new CounsellingOrderReservationRequestDTO();
|
counsellingOrderReservationRequestDTO.setUserName(userName);
|
counsellingOrderReservationRequestDTO.setCustomerId(LoginContext.me().getLoginUser().getUserId());
|
counsellingOrderReservationRequestDTO.setStauts(stauts);
|
Page<CounsellingOrderReservation> page = this.counsellingOrderReservationService.findWorkPage(PageFactory.defaultPage(), counsellingOrderReservationRequestDTO);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
}
|
|
|
@ApiOperation("分页查询指定条件的预约记录,(咨询师后台-预约管理)")
|
@GetResource(name = "分页查询指定条件的预约记录,(咨询师后台-预约管理)", path = "/counsellingOrderReservation/getBackCounsellingOrderReservationForPage", requiredPermission = false)
|
public ResponseData<PageResult<CounsellingOrderReservation>> getBackCounsellingOrderReservationForPage(CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) {
|
counsellingOrderReservationRequestDTO.setCustomerId(LoginContext.me().getLoginUser().getUserId());
|
Page<CounsellingOrderReservation> page = this.counsellingOrderReservationService.findWorkPage(PageFactory.defaultPage(), counsellingOrderReservationRequestDTO);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
}
|
|
@ApiOperation("分页查询指定条件的预约记录,指定咨询师id")
|
@GetResource(name = "分页查询指定条件的预约记录,指定咨询师id", path = "/counsellingOrderReservation/getCounsellingOrderInfoForPage", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "pageNo", value = "分页:第几页(从1开始)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "pageSize", value = "分页:每页大小(默认10)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "counsellingInfoId", value = "咨询师id", dataTypeClass = Long.class, paramType = "query")
|
} )
|
public ResponseData<PageResult<CounsellingOrderReservation>> getCounsellingOrderInfoForPage(Integer pageNo, Integer pageSize,Long counsellingInfoId) {
|
CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO = new CounsellingOrderReservationRequestDTO();
|
counsellingOrderReservationRequestDTO.setCounsellingInfoId(counsellingInfoId);
|
Page<CounsellingOrderReservation> page = this.counsellingOrderReservationService.findPage(PageFactory.defaultPage(), counsellingOrderReservationRequestDTO);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
}
|
|
|
|
|
@ApiOperation("布置咨询作业")
|
@PostResource(name = "布置咨询作业", path = "/counsellingReservationWork/add")
|
@BusinessLog
|
public ResponseData<CounsellingReservationWork> addCounsellingReservationWork(@RequestBody CounsellingReservationWork counsellingReservationWork) {
|
CounsellingReservationWork counsellingReservationWorkOld = this.counsellingReservationWorkService.getOne(new LambdaQueryWrapper<CounsellingReservationWork>().eq(CounsellingReservationWork::getCounsellingOrderReservationId,counsellingReservationWork.getCounsellingOrderReservationId())
|
.last(" limit 1"));
|
if (counsellingReservationWorkOld == null){
|
this.counsellingReservationWorkService.save(counsellingReservationWork);
|
}else{
|
counsellingReservationWorkOld.setWorkContent(counsellingReservationWork.getWorkContent());
|
counsellingReservationWorkOld.setWorkImageUrls(counsellingReservationWork.getWorkImageUrls());
|
this.counsellingReservationWorkService.updateById(counsellingReservationWorkOld);
|
|
// 为推送赋值
|
counsellingReservationWork.setId(counsellingReservationWorkOld.getId());
|
}
|
|
CounsellingOrderReservation counsellingOrderReservation = this.counsellingOrderReservationService.getById(counsellingReservationWork.getCounsellingOrderReservationId());
|
CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderReservation.getCounsellingInfoId());
|
|
// 推送消息内容
|
String pushContent = "给你布置了作业,快去完成吧。";
|
// IM推送数据json
|
ImPushDataDTO pushData = ImPushDataDTO.builder()
|
.type(ImPushTypeEnum.S_TO_C_TIP_MENTAL_APPOINTMENT_PUSH_WORK.getCode())
|
.objId(ObjUtil.toString(counsellingReservationWork.getId()))
|
.title("通知")
|
.content(pushContent)
|
// .extra("("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")")
|
.data1(ObjUtil.toString(counsellingReservationWork.getCounsellingOrderReservationId()))
|
.data2(ObjUtil.toString(counsellingOrderReservation.getCounsellingOrderId()))
|
.data3(ObjUtil.toString(counsellingOrderReservation.getCounsellingInfoId()))
|
.build();
|
ImGroup imGroup = this.imGroupService.getOne(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getCreateUser,counsellingOrderReservation.getUserId())
|
.eq(ImGroup::getOrderId,counsellingInfo.getId()).eq(ImGroup::getIsDelete,0).eq(ImGroup::getGroupType,2).last(" limit 1"));
|
if (imGroup != null){
|
// 发送预约
|
imBizService.messageSendGroup(counsellingInfo.getUserId()+"", new String[]{imGroup.getId()+""}, pushData);
|
|
}
|
//单聊
|
// 推送消息内容
|
String pushContent1 = "你的预约("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")已发布作业,请完成。";
|
// IM推送数据json
|
ImPushDataDTO pushData1 = ImPushDataDTO.builder()
|
.type(ImPushTypeEnum.S_TO_C_TIP_MENTAL_APPOINTMENT_PUSH_WORK_USER.getCode())
|
.objId(ObjUtil.toString(counsellingReservationWork.getId()))
|
.title("通知")
|
.content(pushContent1)
|
// .extra("("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")")
|
.data1(ObjUtil.toString(counsellingReservationWork.getCounsellingOrderReservationId()))
|
.data2(ObjUtil.toString(counsellingOrderReservation.getCounsellingOrderId()))
|
.data3(ObjUtil.toString(counsellingOrderReservation.getCounsellingInfoId()))
|
.build();
|
// 发送预约
|
imBizService.messageSendSystem(counsellingInfo.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData1, ImUserTypeEnum.USER, null, true);
|
|
|
return new SuccessResponseData<>(counsellingReservationWork);
|
}
|
|
|
@ApiOperation("根据咨询订单预约id查询咨询作业信息")
|
@GetResource(name = "布置咨询作业", path = "/counsellingReservationWork/getCounsellingReservationWorkinfo")
|
@BusinessLog
|
public ResponseData<CounsellingReservationWork> getCounsellingReservationWorkinfo(Long counsellingOrderReservationId) {
|
CounsellingReservationWork counsellingReservationWorkOld = this.counsellingReservationWorkService.getOne(new LambdaQueryWrapper<CounsellingReservationWork>().eq(CounsellingReservationWork::getCounsellingOrderReservationId, counsellingOrderReservationId)
|
.last(" limit 1"));
|
return new SuccessResponseData<>(counsellingReservationWorkOld);
|
}
|
|
|
@ApiOperation("添加咨询记录信息")
|
@PostResource(name = "添加咨询记录信息", path = "/counsellingReservationRecord/add")
|
public ResponseData<CounsellingReservationRecord> addCounsellingReservationRecord(@RequestBody CounsellingReservationRecord counsellingReservationRecord) {
|
CounsellingReservationRecord counsellingReservationRecordOld = this.counsellingReservationRecordService.getOne(new LambdaQueryWrapper<CounsellingReservationRecord>().eq(CounsellingReservationRecord::getCounsellingOrderReservationId,counsellingReservationRecord.getCounsellingOrderReservationId())
|
.eq(CounsellingReservationRecord::getIsDelete,0).last(" limit 1"));
|
if (counsellingReservationRecordOld == null){
|
this.counsellingReservationRecordService.save(counsellingReservationRecord);
|
}else{
|
counsellingReservationRecordOld.setContent(counsellingReservationRecord.getContent());
|
counsellingReservationRecordOld.setImageUrls(counsellingReservationRecord.getImageUrls());
|
this.counsellingReservationRecordService.updateById(counsellingReservationRecordOld);
|
}
|
|
return new SuccessResponseData<>(counsellingReservationRecord);
|
}
|
|
@ApiOperation("根据咨询订单预约id查询咨询记录信息")
|
@GetResource(name = "根据咨询订单预约id查询咨询记录信息", path = "/counsellingReservationRecord/getCounsellingReservationRecordInfo")
|
public ResponseData<CounsellingReservationRecord> getCounsellingReservationRecordInfo(Long counsellingOrderReservationId) {
|
CounsellingReservationRecord counsellingReservationRecordOld = this.counsellingReservationRecordService.getOne(new LambdaQueryWrapper<CounsellingReservationRecord>().eq(CounsellingReservationRecord::getCounsellingOrderReservationId,counsellingOrderReservationId)
|
.eq(CounsellingReservationRecord::getIsDelete,0).last(" limit 1"));
|
|
return new SuccessResponseData<>(counsellingReservationRecordOld);
|
}
|
|
@ApiOperation("根据用户和咨询师获取咨询记录信息列表")
|
@GetResource(name = "根据用户和咨询师获取咨询记录信息列表", path = "/counsellingReservationRecord/page", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "counsellingInfoId", value = "咨询师id", dataTypeClass = Long.class, paramType = "query"),
|
@ApiImplicitParam(name = "userId", value = "用户id", dataTypeClass = Long.class, paramType = "query")
|
} )
|
public ResponseData<PageResult<CounsellingReservationRecord>> counsellingReservationRecordPage(Integer pageNo, Integer pageSize,Long counsellingInfoId,Long userId) {
|
List<CounsellingOrderReservation> counsellingOrderReservationList = this.counsellingOrderReservationService.list(new LambdaQueryWrapper<CounsellingOrderReservation>().
|
eq(CounsellingOrderReservation::getUserId,userId).eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfoId).select(CounsellingOrderReservation::getId)
|
.notIn(CounsellingOrderReservation::getStauts,5,6));
|
List<Long> idsList = counsellingOrderReservationList.stream().map(CounsellingOrderReservation::getId).collect(Collectors.toList());
|
|
LambdaQueryWrapper<CounsellingReservationRecord> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingReservationRecord>().eq(CounsellingReservationRecord::getIsDelete, false)
|
.orderByDesc(CounsellingReservationRecord::getId);
|
if (CollectionUtil.isNotEmpty(idsList)) {
|
lambdaQueryWrapper.in(CounsellingReservationRecord::getCounsellingOrderReservationId,idsList);
|
}else {
|
lambdaQueryWrapper.eq(CounsellingReservationRecord::getCounsellingOrderReservationId,0);
|
}
|
|
Page<CounsellingReservationRecord> page = this.counsellingReservationRecordService.page(PageFactory.defaultPage(), lambdaQueryWrapper);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
|
}
|
|
|
|
@ApiOperation("同意或者拒绝咨询预约 预约状态 2-同意,6-已拒绝")
|
@PostResource(name = "同意或者拒绝咨询预约 预约状态 2-同意,6-已拒绝", path = "/counsellingOrderReservation/counsellingReservationUpdateState", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "counsellingOrderReservationId", value = "预约id", dataTypeClass = Long.class, paramType = "query"),
|
@ApiImplicitParam(name = "status", value = "预约状态 2-同意,6-已拒绝", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "cancleReason", value = "取消理由", dataTypeClass = String.class, paramType = "query")
|
} )
|
@Transactional
|
public ResponseData<?> counsellingReservationUpdateState(Long counsellingOrderReservationId, Integer status,String cancleReason) {
|
CounsellingOrderReservation counsellingOrderReservation = this.counsellingOrderReservationService.getById(counsellingOrderReservationId);
|
if (counsellingOrderReservation != null) {
|
counsellingOrderReservation.setStauts(status);
|
counsellingOrderReservation.setCancleReason(cancleReason);
|
}
|
counsellingOrderReservation.setServiceApproveTime(new Date());
|
this.counsellingOrderReservationService.updateById(counsellingOrderReservation);
|
if (status.intValue() == 6 ){
|
//拒绝首次面诊
|
if (counsellingOrderReservation.getReservationType().intValue() == 1){
|
this.counsellingOrderService.update(new LambdaUpdateWrapper<CounsellingOrder>().set(CounsellingOrder::getFirstAppointmentDate,null).set(CounsellingOrder::getFirstAppointmentTimes,null)
|
.eq(CounsellingOrder::getId,counsellingOrderReservation.getCounsellingOrderId()));
|
}
|
CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderReservation.getCounsellingInfoId());
|
|
// 推送消息内容
|
String pushContent = "你的预约("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")已被取消,查看新的预约。" +
|
"取消理由:"+Optional.ofNullable(cancleReason).orElse("咨询师有事");
|
// IM推送数据json
|
ImPushDataDTO pushData = ImPushDataDTO.builder()
|
.type(ImPushTypeEnum.S_TO_C_TIP_AUDIT_NO_PASS.getCode())
|
.objId(ObjUtil.toString(counsellingOrderReservation.getId()))
|
.title("通知")
|
.content(pushContent)
|
// .extra("("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")")
|
.data1(ObjUtil.toString(counsellingOrderReservation.getCounsellingOrderId()))
|
.build();
|
imBizService.messageSendSystem(counsellingInfo.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData, ImUserTypeEnum.USER, null, true);
|
}else{
|
CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderReservation.getCounsellingInfoId());
|
|
// 推送消息内容
|
String pushContent = "你的预约("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")已确认,请按时参加";
|
// IM推送数据json
|
ImPushDataDTO pushData = ImPushDataDTO.builder()
|
.type(ImPushTypeEnum.S_TO_C_TIP_AUDIT_NO_PASS.getCode())
|
.objId(ObjUtil.toString(counsellingOrderReservation.getId()))
|
.title("通知")
|
.content(pushContent)
|
// .extra("("+DateUtil.formatDate(counsellingOrderReservation.getReservationBeginTime())+" "+DateUtil.format(counsellingOrderReservation.getReservationBeginTime(),"HH:mm")+"-"+DateUtil.format(counsellingOrderReservation.getReservationEndTime(),"HH:mm")+")")
|
.build();
|
imBizService.messageSendSystem(counsellingInfo.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData, ImUserTypeEnum.USER, null, true);
|
}
|
|
return new SuccessResponseData<>();
|
}
|
|
@ApiOperation("开始咨询预约服务")
|
@PostResource(name = "开始咨询预约服务", path = "/counsellingOrderReservation/startCounsellingReservation", requiredPermission = false)
|
@Transactional
|
public ResponseData<?> startCounsellingReservation(Long counsellingOrderReservationId) {
|
CounsellingOrderReservation counsellingOrderReservation = this.counsellingOrderReservationService.getById(counsellingOrderReservationId);
|
counsellingOrderReservation.setServiceBeginTime(new Date());
|
counsellingOrderReservation.setStauts(3);
|
this.counsellingOrderReservationService.updateById(counsellingOrderReservation);
|
return new SuccessResponseData<>();
|
}
|
|
@ApiOperation("完成咨询预约服务")
|
@PostResource(name = "完成咨询预约服务", path = "/counsellingOrderReservation/counsellingReservationSuccess", requiredPermission = false)
|
@Transactional
|
public ResponseData<?> counsellingReservationSuccess(Long counsellingOrderReservationId) {
|
CounsellingOrderReservation counsellingOrderReservation = this.counsellingOrderReservationService.getById(counsellingOrderReservationId);
|
counsellingOrderReservation.setStauts(4);
|
//分钟数
|
long minute = DateUtil.between(counsellingOrderReservation.getReservationBeginTime(),counsellingOrderReservation.getReservationEndTime(), DateUnit.MINUTE);
|
int ceil = (int) Math.ceil(minute / 60d);
|
counsellingOrderReservation.setConsumeCourseHour(ceil);
|
counsellingOrderReservation.setServiceEndTime(new Date());
|
counsellingOrderReservation.setServieCompleteTime(new Date());
|
this.counsellingOrderReservationService.updateById(counsellingOrderReservation);
|
CounsellingOrder counsellingOrder = this.counsellingOrderService.getById(counsellingOrderReservation.getCounsellingOrderId());
|
//更新咨询用户信息
|
CounsellingUser counsellingUser = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getUserId,counsellingOrder.getUserId()).eq(CounsellingUser::getCounsellingInfoId,counsellingOrder.getCounsellingInfoId()));
|
//如果是首次面诊跟新完成状态
|
if (counsellingOrderReservation.getReservationType().intValue() == 1){
|
counsellingOrder.setStatusFlag(2);
|
//更新客户是否完成首次咨询预约
|
this.customerService.update(new LambdaUpdateWrapper<Customer>().set(Customer::getIsFirstAppointment,1).eq(Customer::getCustomerId,counsellingOrder.getUserId()));
|
counsellingUser.setIsFirstAppointment(3);
|
counsellingUser.setStatusFlag(2);
|
}else {
|
//判断是否完成咨询订单服务
|
if (counsellingOrder.getResidueClassHours().intValue() - ceil <= 0 ){
|
counsellingOrder.setStatusFlag(2);
|
}
|
//扣除咨询课时
|
counsellingOrder.setResidueClassHours(counsellingOrder.getResidueClassHours().intValue() - ceil);
|
counsellingUser.setResidueClassHours(counsellingUser.getResidueClassHours().intValue() - ceil);
|
}
|
this.counsellingUserService.updateById(counsellingUser);
|
this.counsellingOrderService.updateById(counsellingOrder);
|
return new SuccessResponseData<>();
|
}
|
|
@ApiOperation("分页查询预约用户信息")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "pageNo", value = "分页:第几页(从1开始)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "pageSize", value = "分页:每页大小(默认10)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "userName", value = "用户名", dataTypeClass = String.class, paramType = "query"),
|
@ApiImplicitParam(name = "phone", value = "联系电话", dataTypeClass = String.class, paramType = "query")
|
} )
|
@GetResource(name = "分页查询预约用户信息", path = "/counsellingOrder/counsellingOrderReservationPage", requiredPermission = false)
|
public ResponseData<PageResult<CounsellingOrderResponseDTO>> counsellingOrderReservationPage(Integer pageNo, Integer pageSize,String userName,
|
String phone) {
|
CounsellingOrderRequest counsellingOrderRequest = new CounsellingOrderRequest();
|
counsellingOrderRequest.setCustomerId(LoginContext.me().getLoginUser().getUserId());
|
counsellingOrderRequest.setPhone(phone);
|
counsellingOrderRequest.setUserName(userName);
|
|
Page<CounsellingOrderResponseDTO> page = this.counsellingOrderService.findWorkCounsellingOrderPage(PageFactory.defaultPage(), counsellingOrderRequest);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
}
|
|
@ApiOperation("咨询师预约-预约查询-预约记录-分页查询预约用户信息")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "pageNo", value = "分页:第几页(从1开始)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "pageSize", value = "分页:每页大小(默认10)", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "userName", value = "用户名", dataTypeClass = String.class, paramType = "query"),
|
@ApiImplicitParam(name = "phone", value = "联系电话", dataTypeClass = String.class, paramType = "query")
|
} )
|
@GetResource(name = "咨询师预约-预约查询-预约记录-分页查询预约用户信息", path = "/counsellingUser/counsellingUserPage", requiredPermission = false)
|
public ResponseData<PageResult<CounsellingUser>> counsellingUserPage(Integer pageNo, Integer pageSize,String userName,
|
String phone) {
|
CounsellingUserRequest counsellingUserRequest = new CounsellingUserRequest();
|
counsellingUserRequest.setCustomerId(LoginContext.me().getLoginUser().getUserId());
|
counsellingUserRequest.setPhone(phone);
|
counsellingUserRequest.setUserName(userName);
|
Page<CounsellingUser> page = this.counsellingUserService.findCounsellingUserPage(PageFactory.defaultPage(), counsellingUserRequest);
|
return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
|
}
|
|
|
|
@ApiOperation("咨询师后台-客户管理-查询详细-根据工作人员id和用户id查询咨询课程详细信息")
|
@GetResource(name = "咨询师后台-客户管理-查询详细-根据工作人员id和用户id查询咨询课程详细信息", path = "/counsellingUser/getCounsellingUserInfo", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "customerId", value = "工作人员id,不传默认当前id", dataTypeClass = Integer.class, paramType = "query"),
|
@ApiImplicitParam(name = "userId", value = "用户id", dataTypeClass = Integer.class, paramType = "query")
|
} )
|
public ResponseData<CounsellingUser> getCounsellingUserInfo(Long customerId,Long userId) {
|
|
CounsellingUserRequest counsellingUserRequest = new CounsellingUserRequest();
|
|
counsellingUserRequest.setUserId(userId);
|
if (customerId == null){
|
customerId = LoginContext.me().getLoginUser().getUserId();
|
}
|
CounsellingInfo counsellingInfo = this.counsellingInfoService.getOne(new LambdaQueryWrapper<CounsellingInfo>().eq(CounsellingInfo::getUserId,customerId));
|
counsellingUserRequest.setCounsellingInfoId(counsellingInfo.getId());
|
Page<CounsellingUser> page = this.counsellingUserService.findCounsellingUserPage(PageFactory.defaultPage(), counsellingUserRequest);
|
if (CollectionUtil.isNotEmpty(page.getRecords())){
|
return new SuccessResponseData<>(page.getRecords().get(0));
|
}
|
return new SuccessResponseData<>();
|
}
|
|
@ApiOperation("我的统计信息")
|
@GetResource(name = "我的统计信息", path = "/user/getMyTotalInfo", requiredPermission = false)
|
public ResponseData<MyTotalResponseDTO> getMyTotalInfo(){
|
MyTotalResponseDTO myTotalResponseDTO = new MyTotalResponseDTO();
|
Long custoemrId = LoginContext.me().getLoginUser().getUserId();
|
Date nowDate = new Date();
|
Date todayStartDate = DateUtil.beginOfDay(nowDate);
|
Date todayEndDate = DateUtil.endOfDay(nowDate);
|
Date monthStartDate = DateUtil.beginOfMonth(nowDate);
|
Date monthEndDate = DateUtil.endOfMonth(nowDate);
|
Customer customer = this.customerService.getById(custoemrId);
|
if (StrUtil.isNotBlank(customer.getPostIds()) && StrUtil.isNotBlank(customer.getPostTypes())){
|
List<String> postIds = Arrays.asList(customer.getPostIds().split(","));
|
//是否是咨询师
|
if (postIds.indexOf(PostIdEnum.PO_22.getCode().toString()) != -1){
|
//查询咨询师id
|
CounsellingInfo counsellingInfo = this.counsellingInfoService.getOne(new LambdaQueryWrapper<CounsellingInfo>().eq(CounsellingInfo::getUserId,custoemrId));
|
if (counsellingInfo != null){
|
//咨询量
|
long count = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfo.getId())
|
.eq(CounsellingOrderReservation::getStauts,4));
|
myTotalResponseDTO.setCounsellingTotal(count);
|
//咨询订单数
|
long counseOrderNum = this.counsellingOrderService.count(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrder::getStatusFlag,1,2));
|
myTotalResponseDTO.setOrderNum(counseOrderNum);
|
//累计收益
|
Map<String,Object> map = this.counsellingOrderService.getMap(new QueryWrapper<CounsellingOrder>().select(" IFNULL(SUM(pay_amount),0) money ").lambda().eq(CounsellingOrder::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrder::getStatusFlag,1,2));
|
if (map != null){
|
myTotalResponseDTO.setSumMoney(new BigDecimal(map.get("money").toString()));
|
}
|
//今日咨询课时
|
Map<String,Object> hourMap = this.counsellingOrderReservationService.getMap(new QueryWrapper<CounsellingOrderReservation>().select(" IFNULL(SUM(consume_course_hour),0) num ").lambda().eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,todayEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,todayStartDate)
|
.eq(CounsellingOrderReservation::getReservationType,2));
|
if (hourMap != null){
|
myTotalResponseDTO.setTodayCounsellingHours(Integer.parseInt(hourMap.get("num").toString()));
|
}
|
|
//今日首次咨询
|
long firstCount = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,todayEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,todayStartDate).eq(CounsellingOrderReservation::getReservationType,1));
|
myTotalResponseDTO.setTodayFirstCounsellingNum(firstCount);
|
|
//本月咨询课时
|
Map<String,Object> hourMonthMap = this.counsellingOrderReservationService.getMap(new QueryWrapper<CounsellingOrderReservation>().select(" IFNULL(SUM(consume_course_hour),0) num ").lambda().eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,monthEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,monthStartDate)
|
.eq(CounsellingOrderReservation::getReservationType,2));
|
if (hourMonthMap != null){
|
myTotalResponseDTO.setMonthCounsellingHours(Integer.parseInt(hourMonthMap.get("num").toString()));
|
}
|
|
//本月首次咨询
|
long firstMonthCount = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getCounsellingInfoId,counsellingInfo.getId()).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,monthEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,monthStartDate).eq(CounsellingOrderReservation::getReservationType,1));
|
myTotalResponseDTO.setMonthFirstCounsellingNum(firstMonthCount);
|
}
|
|
|
}
|
//是否是陪护教练
|
if (postIds.indexOf(PostIdEnum.PO_23.getCode().toString()) != -1){
|
//今日新增培训群量
|
long todayGroupNum = this.imGroupUserService.count(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getIsDelete,0).eq(ImGroupUser::getUserId,custoemrId)
|
.le(ImGroupUser::getCreateTime,todayEndDate).gt(ImGroupUser::getCreateTime,todayStartDate));
|
myTotalResponseDTO.setTodayGroupNum(todayGroupNum);
|
//本月新增培训群量
|
long monthGroupNum = this.imGroupUserService.count(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getIsDelete,0).eq(ImGroupUser::getUserId,custoemrId)
|
.le(ImGroupUser::getCreateTime,monthEndDate).gt(ImGroupUser::getCreateTime,monthStartDate));
|
myTotalResponseDTO.setMonthGroupNum(monthGroupNum);
|
}
|
//是否是咨询顾问
|
if (postIds.indexOf(PostIdEnum.PO_21.getCode().toString()) != -1){
|
//咨询量
|
long count = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getConsultantUserId,custoemrId)
|
.eq(CounsellingOrderReservation::getStauts,4));
|
myTotalResponseDTO.setCounsellingTotal(count);
|
//咨询订单数
|
long counseOrderNum = this.counsellingOrderService.count(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getConsultantUserId,custoemrId).in(CounsellingOrder::getStatusFlag,1,2));
|
myTotalResponseDTO.setOrderNum(counseOrderNum);
|
//累计收益
|
Map<String,Object> map = this.counsellingOrderService.getMap(new QueryWrapper<CounsellingOrder>().select(" IFNULL(SUM(pay_amount),0) money ").lambda().eq(CounsellingOrder::getConsultantUserId,custoemrId).in(CounsellingOrder::getStatusFlag,1,2));
|
if (map != null){
|
myTotalResponseDTO.setSumMoney(new BigDecimal(map.get("money").toString()));
|
}
|
//今日咨询课时
|
Map<String,Object> hourMap = this.counsellingOrderReservationService.getMap(new QueryWrapper<CounsellingOrderReservation>().select(" IFNULL(SUM(consume_course_hour),0) num ").lambda().eq(CounsellingOrderReservation::getConsultantUserId,custoemrId).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,todayEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,todayStartDate));
|
if (hourMap != null){
|
myTotalResponseDTO.setTodayCounsellingHours(Integer.parseInt(hourMap.get("num").toString()));
|
}
|
|
//今日首次咨询
|
long firstCount = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getConsultantUserId,custoemrId).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,todayEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,todayStartDate).eq(CounsellingOrderReservation::getReservationType,1));
|
myTotalResponseDTO.setTodayFirstCounsellingNum(firstCount);
|
|
//本月咨询课时
|
Map<String,Object> hourMonthMap = this.counsellingOrderReservationService.getMap(new QueryWrapper<CounsellingOrderReservation>().select(" IFNULL(SUM(consume_course_hour),0) num ").lambda().eq(CounsellingOrderReservation::getConsultantUserId,custoemrId).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,monthEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,monthStartDate));
|
if (hourMonthMap != null){
|
myTotalResponseDTO.setMonthCounsellingHours(Integer.parseInt(hourMonthMap.get("num").toString()));
|
}
|
|
//本月首次咨询
|
long firstMonthCount = this.counsellingOrderReservationService.count(new LambdaQueryWrapper<CounsellingOrderReservation>().eq(CounsellingOrderReservation::getConsultantUserId,custoemrId).in(CounsellingOrderReservation::getStauts,4)
|
.le(CounsellingOrderReservation::getServieCompleteTime,monthEndDate).gt(CounsellingOrderReservation::getServieCompleteTime,monthStartDate).eq(CounsellingOrderReservation::getReservationType,1));
|
myTotalResponseDTO.setMonthFirstCounsellingNum(firstMonthCount);
|
}
|
|
//是否是课程辅导
|
if (postIds.indexOf(PostIdEnum.PO_12.getCode().toString()) != -1){
|
//今日新增培训群量
|
long todayGroupNum = this.imGroupUserService.count(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getIsDelete,0).eq(ImGroupUser::getUserId,custoemrId)
|
.le(ImGroupUser::getCreateTime,todayEndDate).gt(ImGroupUser::getCreateTime,todayStartDate));
|
myTotalResponseDTO.setTodayGroupNum(todayGroupNum);
|
//本月新增培训群量
|
long monthGroupNum = this.imGroupUserService.count(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getIsDelete,0).eq(ImGroupUser::getUserId,custoemrId)
|
.le(ImGroupUser::getCreateTime,monthEndDate).gt(ImGroupUser::getCreateTime,monthStartDate));
|
myTotalResponseDTO.setMonthGroupNum(monthGroupNum);
|
//课程订单数量
|
long courseNum = this.courseOrderService.count(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getTutoringUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2));
|
myTotalResponseDTO.setOrderNum(courseNum);
|
//累计收益
|
Map<String,Object> map = this.courseOrderService.getMap(new QueryWrapper<CourseOrder>().select(" IFNULL(SUM(pay_amount),0) money ").lambda().eq(CourseOrder::getTutoringUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2));
|
if (map != null){
|
myTotalResponseDTO.setSumMoney(new BigDecimal(map.get("money").toString()));
|
}
|
}
|
|
//是否是幸福顾问
|
if (postIds.indexOf(PostIdEnum.PO_11.getCode().toString()) != -1){
|
//课程订单数量
|
long courseNum = this.courseOrderService.count(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2));
|
myTotalResponseDTO.setOrderNum(courseNum);
|
//累计收益
|
Map<String,Object> map = this.courseOrderService.getMap(new QueryWrapper<CourseOrder>().select(" IFNULL(SUM(pay_amount),0) money ").lambda().eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2));
|
if (map != null){
|
myTotalResponseDTO.setSumMoney(new BigDecimal(map.get("money").toString()));
|
}
|
//今日课程订单
|
long courseTodayNum = this.courseOrderService.count(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2)
|
.le(CourseOrder::getCreateTime,todayEndDate).gt(CourseOrder::getCreateTime,todayStartDate));
|
myTotalResponseDTO.setTodayCourseOrderNum(courseTodayNum);
|
//本月课程订单
|
long courseMonthNum = this.courseOrderService.count(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2)
|
.le(CourseOrder::getCreateTime,monthEndDate).gt(CourseOrder::getCreateTime,monthStartDate));
|
myTotalResponseDTO.setMonthCourseOrderNum(courseMonthNum);
|
//查询课程标签
|
List<CourseTag> courseTags = this.courseTagService.list(new LambdaQueryWrapper<CourseTag>().eq(CourseTag::getIsDelete,0));
|
|
List<CourseOrder> courseOrderList = this.courseOrderService.list(new LambdaQueryWrapper<CourseOrder>().select(CourseOrder::getCourseId,CourseOrder::getCourseJson).eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2)
|
.le(CourseOrder::getCreateTime,todayEndDate).gt(CourseOrder::getCreateTime,todayStartDate));
|
|
List<CourseOrder> courseMonthOrderList = this.courseOrderService.list(new LambdaQueryWrapper<CourseOrder>().select(CourseOrder::getCourseId,CourseOrder::getCourseJson).eq(CourseOrder::getCourseUserId,custoemrId).in(CourseOrder::getStatusFlag,1,2)
|
.le(CourseOrder::getCreateTime,monthEndDate).gt(CourseOrder::getCreateTime,monthStartDate));
|
|
if (CollectionUtil.isNotEmpty(courseTags) && CollectionUtil.isNotEmpty(courseMonthOrderList)){
|
Map<String,Integer> todayMap = new HashMap<>();
|
|
Map<String,Integer> monthMap = new HashMap<>();
|
|
courseTags.forEach(courseTag -> {
|
//今日的
|
if (CollectionUtil.isNotEmpty(courseOrderList)){
|
courseOrderList.forEach(courseOrder -> {
|
Course course = JSONUtil.toBean(courseOrder.getCourseJson(),Course.class);
|
List<String> tages = Arrays.asList(course.getCourseTagIds().split(","));
|
if (tages.contains(courseTag.getId().toString())){
|
Integer num = todayMap.get(courseTag.getTagName()+"课程");
|
if (num == null){
|
num = 1;
|
todayMap.put(courseTag.getTagName()+"课程",num);
|
}else{
|
todayMap.put(courseTag.getTagName()+"课程",num++);
|
}
|
}
|
|
});
|
}
|
//今月
|
if (CollectionUtil.isNotEmpty(courseMonthOrderList)){
|
courseMonthOrderList.forEach(courseOrder -> {
|
Course course = JSONUtil.toBean(courseOrder.getCourseJson(),Course.class);
|
List<String> tages = Arrays.asList(course.getCourseTagIds().split(","));
|
if (tages.contains(courseTag.getId().toString())){
|
Integer num = monthMap.get(courseTag.getTagName()+"课程");
|
if (num == null){
|
num = 1;
|
monthMap.put(courseTag.getTagName()+"课程",num);
|
}else{
|
monthMap.put(courseTag.getTagName()+"课程",num++);
|
}
|
}
|
|
});
|
}
|
|
});
|
|
myTotalResponseDTO.setTodayCourseMap(todayMap);
|
myTotalResponseDTO.setMonthCourseMap(monthMap);
|
}
|
}
|
|
// 是否是性格分析师
|
if (postIds.indexOf(PostIdEnum.PO_31.getCode().toString()) != -1) {
|
// 订单数
|
long courseNum = this.orderConsultOneService.count(
|
new LambdaQueryWrapper<OrderConsultOne>().eq(OrderConsultOne::getGoodsId, custoemrId).in(OrderConsultOne::getStatusFlag, 1)
|
);
|
myTotalResponseDTO.setOrderNumP31(courseNum);
|
// 累计收益
|
Map<String, Object> map = this.orderConsultOneService.getMap(
|
new QueryWrapper<OrderConsultOne>().select(" IFNULL(SUM(pay_amount),0) money ").lambda().eq(OrderConsultOne::getGoodsId, custoemrId).in(OrderConsultOne::getStatusFlag, 1)
|
);
|
if (map != null) {
|
myTotalResponseDTO.setSumMoneyP31(new BigDecimal(map.get("money").toString()));
|
}
|
|
// 今日咨询群量
|
long todayGroupNum = this.orderConsultOneService.count(
|
new LambdaQueryWrapper<OrderConsultOne>()
|
.eq(OrderConsultOne::getIsDelete, 0)
|
.eq(OrderConsultOne::getGoodsId, custoemrId)
|
.gt(OrderConsultOne::getCreateTime, todayStartDate)
|
.le(OrderConsultOne::getCreateTime, todayEndDate)
|
);
|
myTotalResponseDTO.setTodayNumP31(todayGroupNum);
|
// 本月咨询群量
|
long monthGroupNum = this.orderConsultOneService.count(
|
new LambdaQueryWrapper<OrderConsultOne>()
|
.eq(OrderConsultOne::getIsDelete, 0)
|
.eq(OrderConsultOne::getGoodsId, custoemrId)
|
.le(OrderConsultOne::getCreateTime, monthEndDate)
|
.gt(OrderConsultOne::getCreateTime, monthStartDate)
|
);
|
myTotalResponseDTO.setMonthNumP31(monthGroupNum);
|
}
|
}
|
|
return new SuccessResponseData<>(myTotalResponseDTO);
|
}
|
|
@ApiOperation("随机客服人员")
|
@GetResource(name = "随机客服人员", path = "/randomServicePersonnel", requiredPermission = false)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "lineStatus", value = "在线状态,0在线,1离线,2登出", dataTypeClass = String.class),
|
})
|
public ResponseData<CustomerInfo> randomServicePersonnel(String lineStatus) {
|
Customer customer = customerService.randomWorkerByLineStatusAndPost(lineStatus, null, PostIdEnum.PO_41.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
|
CustomerInfo customerInfo = null;
|
if (customer != null) {
|
customerInfo = BeanUtil.toBean(customer, CustomerInfo.class);
|
}
|
return new SuccessResponseData<>(customerInfo);
|
}
|
|
@ApiOperation("工作人员_重置密码")
|
@PostResource(name = "工作人员_重置密码", path = RuleConstants.NOT_LOGIN + "/sysUser/resetPwd", requiredPermission = false)
|
@BusinessLog
|
public ResponseData<?> resetPwd(@RequestBody SysUserResetPwdRequest req) {
|
return sysUserBusinessService.resetPwd(req);
|
}
|
|
@ApiOperation("工作人员_ID重置密码")
|
@PostResource(name = "工作人员_ID重置密码", path = "/sysUser/resetPwdById", requiredPermission = false)
|
@BusinessLog
|
public ResponseData<?> resetPwdById(@RequestBody SysUserResetPwdByIdRequest req) {
|
return sysUserBusinessService.resetPwdById(req);
|
}
|
|
|
}
|