package com.xzx.gc.user.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xzx.gc.common.Result; import com.xzx.gc.common.annotations.PassToken; import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.constant.OrderEnum; import com.xzx.gc.common.constant.UserEnum; import com.xzx.gc.common.dto.SimplePage; import com.xzx.gc.common.dto.gdmap.UploadTraceLocationDto; import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.request.BaseController; import com.xzx.gc.common.utils.*; import com.xzx.gc.common.utils.ali.SmsUtil; import com.xzx.gc.entity.*; import com.xzx.gc.model.IdDTO; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.*; import com.xzx.gc.model.pay.PayInfoReq; import com.xzx.gc.model.user.*; import com.xzx.gc.user.dto.*; import com.xzx.gc.user.mapper.*; import com.xzx.gc.user.service.*; import com.xzx.gc.util.DoubleUtil; import com.xzx.gc.util.SessionUtil; 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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import tk.mybatis.mapper.entity.Example; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; /** * @author:andylei * @title * @Description * @date 2018/11/22/022 * @修改历史 */ @Api(tags = "用户管理") @RestController @Validated @Slf4j public class UserController extends BaseController { @Autowired private RedPaperRuleService redPaperRuleService; @Autowired private UserShareInfoMapper userShareInfoMapper; @Autowired private BusinessUtil businessUtil; @Autowired public UserLoginService userLoginService; @Autowired public UserService userService; @Autowired private OrderDetailMapper orderDetailMapper; @Autowired UserStatService userStatService; @Autowired private OtherUserService otherUserService; @Autowired private OtherUserMapper otherUserMapper; @Autowired private OrderService orderService; @Autowired private UserMapper userMapper; @Autowired private OrderMapper orderMapper; @Autowired private RedisUtil redisUtil; @Autowired private PosterService posterService; @Autowired private UserTargetInfoService userTargetInfoService; @Autowired private PartnerFenceService partnerFenceService; @Autowired private SessionUtil sessionUtil; @Autowired private OrderStorageInfoMapper orderStorageInfoMapper; @Autowired private CityPartnerService cityPartnerService; /** * 查询我的环保金 * * @param accountReq */ @ApiOperation(value = "我的环保金") @PostMapping("/user/query/mymoney") public Result> queryMyMoney(HttpServletRequest request, @RequestBody AccountReq accountReq) { Result result = new Result(); List list = userService.queryMyMoney(accountReq); if (businessUtil.isApp(getClientType(request)) && accountReq.getUserType().equals(CommonEnum.回收员.getValue()) && !CollectionUtils.isEmpty(list)) { RecycleStatistic orderItemInfo = orderService.findOrderItemInfo(getUserId(request), 2); if (orderItemInfo != null) { BeanUtils.copyProperties(orderItemInfo, list.get(0)); } } result.setData(list); return result; } /** * 查询环保金明细 * * @param payInfoReq */ @ApiOperation(value = "环保金明细") @PostMapping("/user/query/moneydetail") public Result queryMoneyDetail(HttpServletRequest request, @RequestBody PayInfoReq payInfoReq) { Result result = new Result(); MoneyDetailVo moneyDetail = userStatService.queryMoneyDetail(payInfoReq); result.setData(moneyDetail); return result; } /** * 查询用户信息 * * @param userReq */ @ApiOperation(value = "根据手机号查询所有用户信息") @PostMapping("/user/query/userinfo") public Result> queryUserInfo(HttpServletRequest request, @RequestBody UserReq userReq) { Result result = new Result(); List list = null; if (StrUtil.isBlank(getClientType(request)) || CommonEnum.WEB.getValue().equals(getClientType(request))) { //普通用户 list = userService.queryUserInfo(userReq); List byMobile = otherUserService.findByMobile(userReq.getMobilePhone()); if (!CollectionUtils.isEmpty(byMobile)) { for (OtherUserInfo otherUserInfo : byMobile) { UserInfoVo userInfoVo = new UserInfoVo(); userInfoVo.setUserId(otherUserInfo.getUserId()); userInfoVo.setMobilePhone(otherUserInfo.getMobilePhone()); userInfoVo.setAvatar(otherUserInfo.getAvatar()); userInfoVo.setNickName(otherUserInfo.getNickName()); userInfoVo.setSex(otherUserInfo.getSex()); userInfoVo.setBirthday(otherUserInfo.getBirthday()); userInfoVo.setUserType(otherUserInfo.getUserType()); if (!CollectionUtils.isEmpty(list)) { list.add(userInfoVo); } } } } else { OtherUserInfo otherUserInfo = otherUserService.findById(getUserId(request)); UserInfoVo userInfoVo = new UserInfoVo(); userInfoVo.setUserId(otherUserInfo.getUserId()); userInfoVo.setMobilePhone(otherUserInfo.getMobilePhone()); userInfoVo.setAvatar(otherUserInfo.getAvatar()); userInfoVo.setNickName(otherUserInfo.getNickName()); userInfoVo.setSex(otherUserInfo.getSex()); userInfoVo.setBirthday(otherUserInfo.getBirthday()); userInfoVo.setUserType(otherUserInfo.getUserType()); list = new ArrayList<>(); list.add(userInfoVo); } result.setData(list); return result; } /** * 验证支付密码 * * @param accountReq */ @ApiOperation(value = "验证支付密码") @PostMapping("/user/verify/paypassword") public Result VerifyPayPassword(@RequestBody AccountReq accountReq) { Result result = new Result(); String returnvalue = userService.VerifyPayPassword(accountReq); if ("isLock".equals(returnvalue)) { result.setCode(-1); result.setMsg("账户被锁定,将在24小时后恢复"); } else if ("success".equals(returnvalue)) { result.setCode(0); result.setMsg("支付密码校验成功"); } else { Map m = new HashMap(); m.put("remainTime", 5 - Integer.parseInt(returnvalue)); result.setCode(-1); result.setMsg("支付密码错误"); result.setData(m); } return result; } /** * 新增支付密码 * * @param accountReq */ @ApiOperation(value = "新增支付密码") @PostMapping("/user/add/paypassword") public Result AddPayPassword(HttpServletRequest request, @RequestBody AccountReq accountReq) { Result result = new Result(); userService.AddPayPassword(accountReq); String mobilePhone = userService.findOtherByUserId(getUserId(request),0); OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) .methodName(Constants.USER_MODUL_NAME).operateAction("新增支付密码-"+accountReq.getUserId()).build(); mqUtil.sendApp(build); return result; } /** * 修改支付密码 * * @param accountReq */ @ApiOperation(value = "修改支付密码") @PostMapping("/user/modify/paypassword") public Result ModifyPayPassword(HttpServletRequest request, @RequestBody AccountReq accountReq) { Result result = new Result(); int returnvalue = userService.ModifyPayPassword(accountReq); if (returnvalue == -1) { result.setCode(-1); result.setMsg("验证码失效"); } else if (returnvalue == -2) { result.setCode(-1); result.setMsg("验证码错误"); } else if (returnvalue == -3) { return Result.error(-1, "手机号码不正确"); } redisUtil.del(Constants.REDIS_USER_KEY + "code:channel:" + accountReq.getMobilePhone()); String mobilePhone = userService.findOtherByUserId(getUserId(request),0); OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) .methodName(Constants.USER_MODUL_NAME).operateAction("修改支付密码-"+accountReq.getUserId()).build(); mqUtil.sendApp(build); return result; } @ApiOperation(value = "更新用户经纬度") @PostMapping("/user/updateAddr") public Result updateAddr(HttpServletRequest request, @RequestBody AddressDto addressDto) { String userId = getUserId(request); addressDto.setUserId(userId); userService.updateAddr(addressDto); UserInfo byId = userService.findById(addressDto.getUserId()); if (byId != null) { userTargetInfoService.updateTargetUserLon(byId.getMobilePhone(), addressDto.getLongitude(), addressDto.getLatitude()); } String mobilePhone = userService.findOtherByUserId(getUserId(request),0); OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) .methodName(Constants.USER_MODUL_NAME).operateAction("更新用户经纬度-"+addressDto.getUserId()).build(); mqUtil.sendApp(build); return Result.success(null); } @ApiOperation(value = "分页查询用户邀请的人数明细") @PostMapping("/user/findVisiter") public Result findVisiter(HttpServletRequest request, @RequestBody SimplePage simplePage) { Result result = new Result(); String userId = getUserId(request); UserInfo userInfo = userMapper.selectByPrimaryKey(userId); FindVisiterDto findVisiterDto = new FindVisiterDto(); //邀请好友次数及赚取金额 UserShareInfo userShareInfo2 = new UserShareInfo(); userShareInfo2.setMobilePhone(userInfo.getMobilePhone()); List select1 = userShareInfoMapper.select(userShareInfo2); if (CollUtil.isNotEmpty(select1)) { findVisiterDto.setInviteCount(Convert.toStr(select1.size())); BigDecimal money = Constants.MONEY_INIT; for (UserShareInfo shareInfo : select1) { String rewardMoney = shareInfo.getRewardMoney(); rewardMoney = StrUtil.isBlank(rewardMoney) ? Convert.toStr(Constants.MONEY_INIT) : rewardMoney; money = NumberUtil.add(money, Convert.toBigDecimal(rewardMoney)); } findVisiterDto.setInviteMoney(businessUtil.changeMoney(Convert.toStr(money))); } //分页 UserShareInfo userShareInfo = new UserShareInfo(); userShareInfo.setMobilePhone(userInfo.getMobilePhone()); PageHelper.startPage(simplePage.getPageNo(), simplePage.getPageSize()); List select = userShareInfoMapper.select(userShareInfo); for (UserShareInfo shareInfo : select) { UserInfo userInfo2 = userService.findByMobileForbidden(shareInfo.getRegisterMobilePhone()); if (userInfo2 != null) { String s = businessUtil.changeMobile(shareInfo.getRegisterMobilePhone()); shareInfo.setRegisterMobilePhone(s); shareInfo.setRegisterAvtar(userInfo2.getAvatar()); //是否已下单 Example example = new Example(OrderInfo.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("createUserId", userInfo2.getUserId()); List list = new ArrayList<>(); list.add(OrderEnum.待入库.getValue()); list.add(OrderEnum.入库中.getValue()); list.add(OrderEnum.完成.getValue()); criteria.andIn("orderStatus", list); //上线时间 criteria.andGreaterThan("createTime", Constants.ONLINE_REBATE_TIME); List list1 = orderMapper.selectByExample(example); if (CollUtil.isNotEmpty(list1)) { BigDecimal money = Constants.MONEY_INIT; shareInfo.setOrder(true); //总下单金额 及提成 for (OrderInfo orderInfo : list1) { OrderDetailInfo orderDetailInfo = orderDetailMapper.selectByPrimaryKey(orderInfo.getOrderId()); money =orderDetailInfo!=null?NumberUtil.add(money, Convert.toBigDecimal(orderDetailInfo.getMoney())):money; } shareInfo.setMoney(Convert.toBigDecimal(businessUtil.changeMoney(Convert.toStr(money)))); Double percentage = select1.stream().filter(x -> StrUtil.isNotBlank(x.getRewardMoney()) && Convert.toBigDecimal(x.getRewardMoney(), BigDecimal.ZERO).compareTo(BigDecimal.ZERO) != 0 && x.getRegisterMobilePhone().equals(userInfo2.getMobilePhone())).mapToDouble(x -> Convert.toDouble(x.getRewardMoney())).sum(); percentage=percentage==null?Convert.toDouble(Constants.MONEY_INIT):percentage; shareInfo.setPercentage(Convert.toBigDecimal(businessUtil.changeMoney(Convert.toStr(percentage)))); } } } PageInfo pageInfo = new PageInfo<>(select); findVisiterDto.setPageInfo(pageInfo); result.setData(findVisiterDto); return result; } @ApiOperation(value = "生成分享海报") @PostMapping(value = "/user/share/poster") public Result sharePoster(HttpServletRequest request) { Result result = new Result(); String userId = getUserId(request); UserInfo userInfo = userMapper.selectByPrimaryKey(userId); if (userInfo != null) { Map generate = posterService.generate(userInfo); result.setData(generate.get("viewUrl")); return result; } else { result.setCode(-1); result.setMsg("用户不存在"); return result; } } @ApiOperation(value = "分页查看用户的分享提成详情") @PostMapping(value = "/user/findPercentageDetail") public Result> findPercentageDetail(HttpServletRequest request, @RequestBody SimplePage simplePage) { String userId = getUserId(request); UserInfo userInfo = userMapper.selectByPrimaryKey(userId); UserShareInfo userShareInfo = new UserShareInfo(); userShareInfo.setMobilePhone(userInfo.getMobilePhone()); PageHelper.startPage(simplePage.getPageNo(), simplePage.getPageSize()); List select = userShareInfoMapper.select(userShareInfo); for (Iterator iterator = select.iterator(); iterator.hasNext(); ) { UserShareInfo shareInfo = iterator.next(); String registerMobilePhone = shareInfo.getRegisterMobilePhone(); UserInfo userInfo2 = userService.findByMobileForbidden(registerMobilePhone); if (userInfo2 == null) { iterator.remove(); continue; } PercentageDto percentageDto = new PercentageDto(); //是否已下单 Example example = new Example(OrderInfo.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("createUserId", userInfo2.getUserId()); List list = new ArrayList<>(); list.add(OrderEnum.待入库.getValue()); list.add(OrderEnum.入库中.getValue()); list.add(OrderEnum.完成.getValue()); criteria.andIn("orderStatus", list); //上线时间 criteria.andGreaterThan("createTime", Constants.ONLINE_REBATE_TIME); List list1 = orderMapper.selectByExample(example); List list2 = new ArrayList<>(); //总下单金额 及提成 for (OrderInfo orderInfo : list1) { OrderDetailInfo orderDetailInfo = orderDetailMapper.selectByPrimaryKey(orderInfo.getOrderId()); if (orderDetailInfo != null) { percentageDto.setOrderId(orderDetailInfo.getOrderId()); percentageDto.setCompleteTime(orderDetailInfo.getCompleteTime()); percentageDto.setMoney(orderDetailInfo.getMoney()); PartnerFence byAddressId = partnerFenceService.findByFenceId(orderInfo.getTownId()); if(byAddressId!=null) { String partnerId = byAddressId.getPartnerId(); RedPaperRule one = redPaperRuleService.getOne(UserEnum.分享分利规则.getValue(),partnerId); if (one != null) { BigDecimal div = NumberUtil.div(Convert.toBigDecimal(one.getShareRatio(), new BigDecimal("0")), new BigDecimal("100")); //获取返利金额 BigDecimal mul = NumberUtil.mul(Convert.toBigDecimal(orderDetailInfo.getMoney()), div); percentageDto.setPercentage("+" + NumberUtil.roundStr(Convert.toStr(mul), 2, RoundingMode.DOWN)); } list2.add(percentageDto); } } } PageInfo pageInfo = new PageInfo<>(list2); return Result.success(pageInfo); } return Result.success(new PageInfo<>(new ArrayList<>())); } @ApiOperation(value = "分页查看所有用户") @PostMapping(value ="/admin/front/user/findOtherAll") public Result> findOtherAll(HttpServletRequest request, @RequestBody UserParamDTO userParamDTO) { return Result.success(userService.findOtherAll(userParamDTO.getPageNo(),userParamDTO.getPageSize(),userParamDTO.getKeyword())); } @PostMapping("/admin/front/user/queryUserApiList.do") @ApiOperation(value="用户管理-普通用户", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userType", value = "用户类型(1为普通用户,2为回收员,3为代丢员,4入库员,5运营员)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "手机号", required = true, dataType = "String") }) public JsonResult> queryUserApiList(@RequestBody UserModel userModel){ Map map = userService.queryCuserForTimeList(userModel); return JsonResult.success(map); } /** * 用户管理-普通用户(是否禁用) * @param userModel */ @PostMapping ("/admin/front/user/UpdateUserApiByUserId.json") @ApiOperation(value="用户管理-普通用户(是否禁用)", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userType", value = "用户类型", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "isProhibit", value = "是否删除(1启用 0禁用)", required = true, dataType = "String") }) public JsonResult> UpdateUserApiByUserId(@RequestBody UserModel userModel){ Map map = new HashMap<>(); userService.UpdateUserApiByUserId(userModel.getIsProhibit(),userModel.getUserId(),userModel.getUserType()); map.put("code",0); map.put("userId",userModel.getUserId()); return JsonResult.success(map); } /** * 普通用户详情 * @param userModel * @return */ @PostMapping( "/admin/front/user/queryUserApiDetail.json") @ApiOperation(value="用户管理-普通用户详情", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "用户手机号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userType", value = "用户类型", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "page", value = "页数", required = true, dataType = "int") }) public JsonResult> queryUserApiDetail(@RequestBody UserModel userModel){ Map result = userService.queryCuserDetail(userModel.getUserId(), userModel.getMobilePhone(), userModel.getUserType(),userModel.getLimit(),userModel.getPage()); return JsonResult.success(result); } /** * 普通用户 * @param userModel * @return */ @PostMapping( "/admin/front/user/queryPromoterApiList.do") @ApiOperation(value="用户管理-推广员(推广员详情接口直接获取)", notes="test: 仅0有正确返回") public JsonResult> queryPromoterApiList(@RequestBody UserModel userModel){ Map map = userService.queryPromoterApiList(userModel); return JsonResult.success(map); } /** * 普通用户 * @param userModel * @return */ @PostMapping("/admin/front/user/queryCollectorApiList.do") @ApiOperation(value="用户管理-回收员(回收员详情接口直接获取)", notes="test: 仅0有正确返回") public JsonResult> queryCollectorApiList(@RequestBody CollectorModel userModel){ Map map = userService.queryCollectorApiList(userModel); return JsonResult.success(map); } @PostMapping("/admin/front/user/queryWarehouseApiList.do") @ApiOperation(value="用户管理-仓管员", notes="test: 仅0有正确返回") public JsonResult> queryWarehouseApiList(@RequestBody CollectorModel collector){ Map map = userService.queryCollectorApiList(collector); return JsonResult.success(map); } @PostMapping( "/admin/front/user/queryPackageApiList.do") @ApiOperation(value="用户管理-打包员", notes="test: 仅0有正确返回") public JsonResult> queryPackageApiList(@RequestBody CollectorModel collector){ Map map = userService.queryPackageApiList(collector); return JsonResult.success(map); } /** * 修改仓管员姓名和仓库名称 * @return */ @PostMapping( "/admin/front/user/updateWarehouse.json") @ApiOperation(value="用户管理-仓管员(修改仓管员姓名或仓库名称)", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "name", value = "仓管员名称", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "sysStorageId", value = "仓库Id", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "sysStorage", value = "所属仓库", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userType", value = "用户类型(4:入库员(仓管员),0:修改仓库名称)", required = true, dataType = "String") }) public JsonResult> updateWarehouse(@RequestBody CollectorModel collector){ Map map = userService.updateWarehouse(collector); return JsonResult.success(map); } /** * 普通用户 * @param collector * @return */ @PostMapping( "/admin/front/user/queryUnregisteredApiList.do") @ApiOperation(value="用户管理-未注册用户(详情直接取该返回数据)", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "area", value = "区域Id", required = true, dataType = "String") }) public JsonResult> queryUnregisteredApiList(@RequestBody CollectorModel collector){ Map map = userService.queryUnregisteredApiList(collector); return JsonResult.success(map); } @PostMapping( "/admin/front/user/sendUserPassword.json") @ApiOperation(value="用户管理-密码重置", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "手机号码", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "String") }) public JsonResult sendUserPassword(@RequestBody UserEditroleModel userModel, HttpServletRequest request) { String password= DoubleUtil.getLowerLetterNumber(8); Map map= MapUtil.newHashMap(); map.put("time", DateUtil.format(new Date(), DateUtils.CHINESE_DATE_FORMAT_MDHM)); map.put("password",password); String content = StrUtil.format(userModel.getMobilePhone()+""+"您的小棕熊到家密码被重置,重置密码是:{password},请及时修改。", map); int i = SmsUtil.sendPoint(userModel.getMobilePhone(), content); String salt = RandomUtil.randomString(16); password = SecurityUtil.encrypt(salt,password); otherUserMapper.updateOtherUserByPhone(userModel.getMobilePhone(),password,salt); if(i==0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("密码重置-"+userModel.getUserId()).build(); mqUtil.sendApp(build); return JsonResult.success("重置密码成功!"); }else{ return JsonResult.failMessage("重置密码失败!"); } } /** * 根据用户ID更新name * @param userModel * @return */ @PostMapping( "/admin/front/user/updateUserNameApi.json") @ApiOperation(value="用户管理-身份设定更新用户姓名", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "userType", value = "用户类型", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "手机号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "name", value = "用户姓名", required = true, dataType = "String") }) public JsonResult> updateUserNameApi(@RequestBody UserModel userModel,HttpServletRequest request){ CoreUser user = sessionUtil.getCurrentUser(); if(user.getId()==1){ return JsonResult.failMessage("超管不能更新用户姓名!"); } if(userModel.getUserType().equals("8")){ return JsonResult.failMessage("不能修改打包员信息!"); } userService.updateUserNameApi(userModel.getUserId(), userModel.getName(), userModel.getMobilePhone(),userModel.getUserType()); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("身份设定更新用户姓名-"+userModel.getUserId()).build(); mqUtil.sendApp(build); Map map = new HashMap<>(); map.put("code",0); return JsonResult.success(map); } /** * 查询推广员页面 * @param promoterModel * @return */ @PostMapping("/admin/front/user/queryQromoterList.do") @ApiOperation(value="数据统计-推广员数据", notes="test: 仅0有正确返回") public JsonResult> queryQromoterList(@RequestBody PromoterModel promoterModel){ Map resultMap = otherUserService.queryQromoterList(promoterModel); return JsonResult.success(resultMap); } /** * * @param model * @return */ @PostMapping("/admin/front/user/queryQromoterOrder.json") @ApiOperation(value="数据统计-推广人员列表", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间(时间为上层页面选择的时间段)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间(时间为上层页面选择的时间段)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "orderWeightCount", value = "订单重量", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "sortType", value = "第几单", required = true, dataType = "String") }) public JsonResult> queryQromoterOrder(@RequestBody PromoterModel model){ Map resultMap = otherUserService.queryQromoterOrder(model); return JsonResult.success(resultMap); } /** * 查询回收员数据 * @param promoterModel * @return */ @PostMapping("/admin/front/user/queryCollectorList.do") @ApiOperation(value="数据统计-回收员数据", notes="test: 仅0有正确返回") public JsonResult> queryCollectorList(@RequestBody PromoterModel promoterModel){ Map resultMap = otherUserService.queryCollectorList(promoterModel); return JsonResult.success(resultMap); } /** * 查询回收人员列表 * @param storageModel * @return */ @PostMapping("/admin/front/user/queryStorageDetailList.json") @ApiOperation(value="数据统计-回收人员列表", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "recycleWeight", value = "订单重量", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "weightError", value = "重量误差", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "receiver", value = "回收人Id(前一个页面的userId)", required = true, dataType = "String") }) public JsonResult> queryStorageDetailList(@RequestBody StorageModel storageModel){ Map result = otherUserService.queryStorageByUserId(storageModel); return JsonResult.success(result); } /** * 查询入库员数据 * @param userModel * @return */ @PostMapping("/admin/front/user/queryStorageList.do") @ApiOperation(value="数据统计-入库员数据", notes="test: 仅0有正确返回") public JsonResult> queryStorageList(@RequestBody UserModel userModel){ Map resultMap = otherUserService.queryStorageList(userModel); return JsonResult.success(resultMap); } /** * 查询入库员列表详情 * @param storageModel * @return */ @PostMapping("/admin/front/user/queryStorageObjectList.json") @ApiOperation(value="数据统计-入库员列表", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "recycleWeight", value = "订单重量", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storageWeight", value = "入库重量", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storageUserId", value = "入库人Id", required = true, dataType = "String") }) public JsonResult> queryStorageObjectList(@RequestBody StorageModel storageModel){ Map result = otherUserService.queryStorageObjectList(storageModel); return JsonResult.success(result); } /** * 查询 * @param userModel * @return */ @PostMapping("/admin/front/user/queryCuserDataList.do") @ApiOperation(value="数据统计-普通用户数据", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "技术时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "手机号", required = true, dataType = "String") }) public JsonResult> queryCuserDataList(@RequestBody UserModel userModel){ userModel.setUserType("1"); Map result = userService.queryCuserForTimeList(userModel); return JsonResult.success(result); } /** * 用户详情数据 * @param userModel * @return */ @PostMapping("/admin/front/user/queryCuserDataDetail.json") @ApiOperation(value="数据统计-普通用户详情", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "用户Id", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "用户Id", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "用户手机号码", required = true, dataType = "String") }) public JsonResult> queryCuserDataDetail(@RequestBody UserModel userModel){ String userId = userModel.getUserId(); String phone = userModel.getMobilePhone(); Map map = userService.queryApiCuserDetail(userId, phone, "1",userModel.getPage(),userModel.getLimit()); return JsonResult.success(map); } @ApiOperation(value = "查询平台用户") @PostMapping(value = {"/otherUser/selectOtherUser","/admin/front/otherUser/selectOtherUser"}) public Result> selectReceiver(@RequestBody SelectOtherUserPageDto simplePage, HttpServletRequest request){ String partnerId = simplePage.getPartnerId(); //web if(businessUtil.isWeb(getClientType(request))){ if(StrUtil.isBlank(partnerId)){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); if(CollUtil.isNotEmpty(partnerIds)){ partnerId=CollUtil.getFirst(partnerIds); } } }else { partnerId = otherUserService.findById(getUserId(request)).getPartnerId(); //打包站查询需要将打包站ID转换成合伙人ID if (simplePage.getPackageType() == 1) { partnerId = cityPartnerService.findById(Convert.toInt(partnerId)).getPackingStation(); } } PageHelper.startPage(simplePage.getPageNo(),simplePage.getPageSize()); List select = otherUserService.findByUserTypeNotId(simplePage.getExtra(),simplePage.getId(),partnerId,simplePage.getKeyword()); if(CollUtil.isNotEmpty(select)){ for (OtherUserInfo userInfo : select) { if(CommonEnum.回收员.getValue().equals(userInfo.getUserType())){ //待完成数目 int fwzNum = orderService.findFwzNum(userInfo.getUserId()); userInfo.setFwzNum(fwzNum); } userInfo.setSalt(null); } } PageInfo pageInfo=new PageInfo<>(select); return Result.success(pageInfo); } @PostMapping( "/admin/front/otherUser/queryCityPartnerForOtherUser.json") @ApiOperation(value="查询合伙人所有回收员和推广员接口", notes="test: 仅0有正确返回") public JsonResult> queryCityPartnerForOtherUser(@RequestBody UserModel model){ Map map = otherUserService.queryCityPartnerForOtherUser(model); return JsonResult.success(map); } @ApiOperation(value = "用户导出",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE,notes = "1、推广员统计 2回收员统计 3入库员统计 6普通用户统计") @PostMapping(value = "/admin/front/user/export") public void fileExport(@RequestBody ExportParamModel exportParamModel, HttpServletRequest request, HttpServletResponse response) { List> rows = new ArrayList<>(); List header=new ArrayList<>(); //标题 switch (exportParamModel.getExportType()) { case 1: header=CollUtil.newArrayList( "推广员", "手机号", "注册用户量", "成交用户量", "成交率", "累计订单", "累计订单重量(kg)", "累计订单金额(元)" ); rows.add(header); PromoterModel promoterModel = new PromoterModel(exportParamModel); Map result = otherUserService.queryQromoterList(promoterModel); List promoterModels = (List) result.get("data"); if (CollUtil.isNotEmpty(promoterModels)) { for(PromoterModel m : promoterModels){ List list = new ArrayList<>(); if(null!=m.getDelFlag()&&!"".equals(m.getDelFlag())){ if(m.getDelFlag().equals("1")){ m.setName(m.getName()+"(已删除)"); } } list.add(m.getName()); list.add(m.getMobilePhone()); list.add(m.getRegistCount()); list.add(m.getCount()); list.add(m.getTurnoverRate()+"%"); list.add(m.getOrderCount()); list.add(DoubleUtil.roundThree(m.getOrderWeightCount())+"kg"); list.add(DoubleUtil.roundTwo(m.getOrderMoneyCount())+"元"); rows.add(list); } } break; case 2: header=CollUtil.newArrayList( "回收员", "手机号", "累计订单", "订单重量(t)", "入库重量(t)", "重量误差(t)", "订单金额(万元)", "入库金额(万元)", "金额误差(万元)"); rows.add(header); promoterModel = new PromoterModel(exportParamModel); result = otherUserService.queryCollectorList(promoterModel); List userModels = (List) result.get("data"); if (CollUtil.isNotEmpty(userModels)) { for(UserModel m : userModels){ List list = new ArrayList<>(); if(null!=m.getDelFlag()&&!"".equals(m.getDelFlag())){ if(m.getDelFlag().equals("1")){ m.setName(m.getName()+"(已删除)"); } } list.add(m.getName()); list.add(m.getMobilePhone()); list.add(m.getOrderNum()+""); list.add(m.getRecycleWeight()); list.add(m.getStorageWeight()); list.add(m.getWeightError()); list.add(m.getRecycleMoney()); list.add(m.getStorageMoney()); list.add(m.getMoneyError()); rows.add(list); } } break; case 3: header=CollUtil.newArrayList( "入库员", "手机号", "所属仓库", "订单量", "订单入库重量(kg)", "订单入库金额(元)", "手动入库重量(kg)", "手动入库金额(元)"); rows.add(header); UserModel userModel = new UserModel(exportParamModel); result = otherUserService.queryStorageList(userModel); List> storageModels=(List>) result.get("data"); if (CollUtil.isNotEmpty(storageModels)) { for(Map m : storageModels){ List list = new ArrayList<>(); if(null!=m.get("delFlag")){ if(m.get("delFlag").toString().equals("1")){ m.put("name",m.get("name").toString()+"(已删除)"); } } list.add(m.get("name").toString()); list.add(m.get("storageuserphone").toString()); list.add(m.get("storageName").toString()); list.add(m.get("orderNum").toString()); list.add(m.get("storageweight").toString()); list.add(m.get("storagemoney").toString()); list.add(m.get("recycleweight").toString()); list.add(m.get("recyclemoney").toString()); rows.add(list); } } break; case 6: header=CollUtil.newArrayList("昵称", "手机号", "注册时间", "待完成订单", "累计订单"); rows.add(header); userModel= new UserModel(exportParamModel) ; userModel.setExportFlag(1); result = userService.queryCuserForTimeList(userModel); userModels = (List) result.get("data"); if (CollUtil.isNotEmpty(userModels)) { for (UserModel m:userModels) { List list = new ArrayList<>(); if(null!=m.getDelFlag()){ if(m.getDelFlag().equals("1")){ m.setNickName(m.getNickName()+"(已删除)"); } } list.add(m.getNickName()); list.add(m.getMobilePhone()); list.add(m.getRegistTime()); list.add(m.getOrderStatus3()+""); list.add(m.getOrderStatus5()+""); rows.add(list); } } break; default: break; } //导出 export(rows,response); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("用户导出-"+exportParamModel.getExportType()).build(); mqUtil.sendApp(build); } @ApiOperation(value = "首页智能推荐") @PostMapping(value = "/user/recommend") @PassToken public Result> recommend(@RequestBody UserRecommendParamDTO userRecommendParamDTO, HttpServletRequest request) { if(userRecommendParamDTO.getAddressId()==null&&StrUtil.isBlank(userRecommendParamDTO.getLatitude())){ return Result.success(); } List list=otherUserService.recommend(userRecommendParamDTO); return Result.success(list); } @ApiOperation(value = "首页智能推荐全部列表") @PostMapping(value = "/user/recommend/list") @PassToken public Result> recommendList(@RequestBody UserRecommendListParamDTO userRecommendListParamDTO, HttpServletRequest request) { if(userRecommendListParamDTO.getAddressId()==null&&StrUtil.isBlank(userRecommendListParamDTO.getLatitude())){ return Result.success(); } List list=otherUserService.recommendList(userRecommendListParamDTO); //假分页 PageInfo pageInfo=new PageInfo<>(list); pageInfo.setTotal(list.size()); list=CollUtil.page(userRecommendListParamDTO.getPageNo()-1,userRecommendListParamDTO.getPageSize(),list); pageInfo.setList(list); return Result.success(pageInfo); } @ApiOperation(value = "查询回收员的实时位置") @PostMapping(value = "/otherUser/location") public Result location(@RequestBody OtherUserLocationParamDTO otherUserLocationParamDTO, HttpServletRequest request) { OtherUserInfo otherUserInfo=otherUserService.findByOrderId(otherUserLocationParamDTO); LongiLatiModel longiLatiModel=new LongiLatiModel(); if(otherUserInfo!=null){ BeanUtil.copyProperties(otherUserInfo,longiLatiModel); } return Result.success(longiLatiModel); } @ApiOperation(value = "根据标识查询用户信息") @PostMapping("/user/info") public Result userInfo(HttpServletRequest request, @RequestBody IdDTO idDTO) { UserInfo byId = userService.findById(idDTO.getId()); if(byId!=null){ String name = byId.getName(); if(StrUtil.isNotBlank(name)){ byId.setNickName(name); }else { byId.setNickName(StringUtils.decode(byId.getNickName())); } } return Result.success(byId); } @ApiOperation(value = "修改平台用户信息") @PostMapping("/otherUser/info/update") public Result userInfo(HttpServletRequest request, @RequestBody OtherUserInfo otherUserInfo) { otherUserService.updateById(otherUserInfo); String mobilePhone = otherUserService.findById(getUserId(request)).getMobilePhone(); OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) .methodName(Constants.USER_MODUL_NAME).operateAction("修改平台用户信息-"+otherUserInfo.getUserId()).build(); mqUtil.sendApp(build); return Result.success(); } }