123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- package com.ylx.massage.service.impl;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ylx.common.constant.MassageConstants;
- import com.ylx.common.exception.ServiceException;
- import com.ylx.common.utils.StringUtils;
- import com.ylx.massage.domain.*;
- import com.ylx.massage.domain.vo.TJsVo;
- import com.ylx.massage.enums.JsStatusEnum;
- import com.ylx.massage.mapper.TJsMapper;
- import com.ylx.massage.service.*;
- import com.ylx.massage.utils.LocationUtil;
- import com.ylx.massage.utils.WeChatUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.time.LocalDateTime;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * 技师表 服务实现类
- */
- @Service
- @Slf4j
- public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsService {
- @Resource
- private TJsMapper mapper;
- @Resource
- private LocationUtil locationUtil;
- @Resource
- private TCollectService collectService;
- @Resource
- private TXiangmuService xiangmuService;
- @Resource
- private TCommentService commentService;
- @Resource
- private TWxUserService wxUserService;
- @Resource
- private WeChatUtil weChatUtil;
- @Override
- public Page<TJs> getAll(Page<TJs> page, TJsVo param) {
- return mapper.getAll(page, param);
- }
- @Override
- public boolean addJs(TJs js) {
- LambdaQueryWrapper<TJs> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TJs::getcOpenId, js.getcOpenId());
- TJs cjs = this.getOne(queryWrapper);
- if (cjs != null) {
- throw new ServiceException("请勿重复申请");
- }
- cacheAddress(js);
- initialization(js);
- return this.save(js);
- }
- private void cacheAddress(TJs js) {
- if (StringUtils.isBlank(js.getcPhone())) {
- throw new ServiceException("手机号不能为空");
- }
- if (StringUtils.isBlank(js.getcAddress())) {
- throw new ServiceException("地址不能为空");
- }
- log.info("js:{}", js);
- JSONObject jsonObject = new JSONObject(js.getcAddress());
- Object latitude = jsonObject.get("latitude");
- Object longitude = jsonObject.get("longitude");
- locationUtil.geoAdd(js.getcOpenId(), Double.parseDouble(longitude.toString()), Double.parseDouble(latitude.toString()));
- }
- @Override
- public boolean wxUpdateJs(TJs js) {
- cacheAddress(js);
- return this.updateById(js);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean auditing(TJs js) {
- TJs js1 = this.getById(js.getId());
- LambdaQueryWrapper<TJs> jsLambdaQueryWrapper = new LambdaQueryWrapper<>();
- jsLambdaQueryWrapper.eq(TJs::getId, js.getId()).eq(TJs::getnTong, JsStatusEnum.JS_NOT_PASS.getCode());
- js.setnTong(JsStatusEnum.JS_PASS.getCode());
- LambdaQueryWrapper<TWxUser> wxLambdaQueryWrapper = new LambdaQueryWrapper<>();
- wxLambdaQueryWrapper.eq(TWxUser::getcOpenid, js1.getcOpenId());
- TWxUser tWxUser = new TWxUser();
- tWxUser.setRole(1);
- wxUserService.update(tWxUser, wxLambdaQueryWrapper);
- return this.update(js, jsLambdaQueryWrapper);
- }
- @Override
- public boolean updateLocation(TJs js) {
- if (StringUtils.isBlank(js.getcOpenId())) {
- throw new ServiceException("技师OpenID不能为空");
- }
- if (StringUtils.isBlank(js.getcAddress())) {
- throw new ServiceException("地址不能为空");
- }
- JSONObject jsonObject = new JSONObject(js.getcAddress());
- Object latitude = jsonObject.get("latitude");
- Object longitude = jsonObject.get("longitude");
- locationUtil.geoAdd(js.getcOpenId(), Double.parseDouble(longitude.toString()), Double.parseDouble(latitude.toString()));
- LambdaQueryWrapper<TJs> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
- objectLambdaQueryWrapper.eq(TJs::getcOpenId, js.getcOpenId());
- return this.update(js, objectLambdaQueryWrapper);
- }
- @Override
- public void newOrderNotification(String openId) {
- // 订单号 23010000010101
- // 用户电话 15055556666
- // 用户名称 李四
- // 时间 2022年11月11日22:22
- // 服务地址 湖南长沙岳麓
- cn.hutool.json.JSONObject param = JSONUtil.createObj();
- //订单号
- param.set("keyword1", "23010000010101");
- //点话
- param.set("keyword2","18360233903");
- param.set("keyword3","李四");
- param.set("keyword4","2022年11月11日22:22");
- param.set("keyword5","湖南长沙岳麓");
- weChatUtil.notification(openId, param.toString());
- }
- @Override
- public TJs getByJsId(String jsId, String openId) {
- if (jsId == null || jsId.trim().isEmpty()) {
- // 处理空或空白的jsId
- throw new ServiceException("Id为空");
- }
- TJs js = this.getById(jsId);
- if (js == null) {
- // 处理getById返回null的情况
- return null; // 或者返回一个新的TJs实例,具体看业务需求
- }
- if (StringUtils.isBlank(js.getcBhList())) {
- // 处理js.getcBhList()返回null或空列表的情况
- js.setProjects(new ArrayList<>()); // 设置空列表,避免后续调用空指针
- return js;
- }
- //项目
- List<String> projectIds = Arrays.stream(js.getcBhList().split(",")).collect(Collectors.toList());
- LambdaQueryWrapper<TXiangmu> xiangmuLambdaQueryWrapper = new LambdaQueryWrapper<>();
- xiangmuLambdaQueryWrapper.in(TXiangmu::getcId, projectIds);
- List<TXiangmu> projects = xiangmuService.list(xiangmuLambdaQueryWrapper);
- js.setProjects(projects);
- //评论
- LambdaQueryWrapper<TComment> commentLambdaQueryWrapper = new LambdaQueryWrapper<>();
- commentLambdaQueryWrapper.eq(TComment::getcJsid, jsId);
- List<TComment> list = commentService.list(commentLambdaQueryWrapper);
- if (CollectionUtil.isNotEmpty(list)) {
- js.setComments(list);
- }
- //是否收藏
- LambdaQueryWrapper<TCollect> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
- objectLambdaQueryWrapper.eq(TCollect::getcJsId, jsId).eq(TCollect::getcWxOpenId, openId);
- TCollect collect = collectService.getOne(objectLambdaQueryWrapper);
- if (collect != null) {
- js.setIsCollection(true);
- } else {
- js.setIsCollection(false);
- }
- return js;
- }
- private static void initialization(TJs js) {
- // 评分默认最高
- js.setnStar(MassageConstants.INTEGER_FIVE);
- // 已服务数量 0
- js.setnNum(MassageConstants.INTEGER_ZERO);
- // 佣金比例 10
- js.setnBili(MassageConstants.INTEGER_TEN);
- // 服务状态
- js.setnStatus(JsStatusEnum.JS_SERVICEABLE.getCode());
- // 上岗状态
- js.setnStatus2(JsStatusEnum.POST_NOT_ON_DUTY.getCode());
- // 审核状态
- js.setnTong(JsStatusEnum.JS_NOT_PASS.getCode());
- js.setnB1(MassageConstants.INTEGER_ZERO);
- js.setnB2(MassageConstants.INTEGER_ZERO);
- js.setnB3(MassageConstants.INTEGER_ZERO);
- js.setDtCreateTime(LocalDateTime.now());
- }
- }
|