package com.xzx.gc.user.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.constant.RedisKeyConstant; import com.xzx.gc.common.constant.UserEnum; import com.xzx.gc.common.exception.RestException; import com.xzx.gc.common.utils.RedisUtil; import com.xzx.gc.common.utils.TokenUtil; import com.xzx.gc.entity.*; import com.xzx.gc.model.user.UserGatherListParDTO; import com.xzx.gc.model.user.UserInfoVo; import com.xzx.gc.user.mapper.UserGatherInfoMapper; import org.apache.tomcat.jni.Address; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional public class UserGatherInfoService { @Autowired private UserGatherInfoMapper userGatherInfoMapper; @Autowired private UserService userService; @Autowired private RedisUtil redisUtil; @Autowired private TokenUtil tokenUtil; @Autowired private AddressService addressService; @Autowired private OrderService orderService; public void add(UserGatherInfo userGatherInfo) { userGatherInfo.setRegistTime(DateUtil.now()); userGatherInfo.setDelFlag(Constants.DEL_NOT_FLAG); userGatherInfo.setIsProhibit(false); userGatherInfo.setUserType(CommonEnum.集货员.getValue()); userGatherInfo.setRegistType(Convert.toShort(CommonEnum.正常注册用户.getValue())); userGatherInfoMapper.insertSelective(userGatherInfo); } public UserGatherInfo findById(String id){ return userGatherInfoMapper.selectByPrimaryKey(id); } public void updateById(UserGatherInfo userGatherInfo){ userGatherInfoMapper.updateByPrimaryKeySelective(userGatherInfo); } public UserGatherInfo findByMobileForBidden(String mobile) { UserGatherInfo otherUserInfo=new UserGatherInfo(); otherUserInfo.setDelFlag(Constants.DEL_NOT_FLAG); otherUserInfo.setMobilePhone(mobile); return userGatherInfoMapper.selectOne(otherUserInfo); } /** * 根据经纬度查找最近500米的集货员 * @param lon * @param lat * @return */ public UserGatherInfo findNearestByLocation(String lon,String lat){ return userGatherInfoMapper.findNearestByLocation(lon,lat); } public List list(UserGatherListParDTO userGatherListParDTO) { //注意申请表会出现多条记录 需要根据时间排序后取第一条 return userGatherInfoMapper.list(userGatherListParDTO); } public void deleteById(String id) { //删除集货员前判断是否有单 int fwzNum = orderService.findFwzNum(id); if(fwzNum>0){ throw new RestException("还有未完成的订单"); } UserGatherInfo userGatherInfo=new UserGatherInfo(); userGatherInfo.setUserId(id); userGatherInfo.setDelFlag(Constants.DEL_FLAG); userGatherInfoMapper.updateByPrimaryKeySelective(userGatherInfo); UserInfo userInfo=new UserInfo(); userInfo.setUserId(id); userInfo.setUserType(CommonEnum.普通用户.getValue()); userService.updateById(userInfo); //拿货地址是用来判断是否集货员地址的标识 List allByUserId = addressService.findAllByUserId(id); for (AddressInfo addressInfo : allByUserId) { if(StrUtil.isNotBlank(addressInfo.getReceiveAddress())){ addressInfo.setReceiveAddress(null); addressService.updateAllById(addressInfo); } } //更新缓存 redisUtil.del(RedisKeyConstant.TOKEN+id); } }