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.util.NumberUtil; import com.xzx.gc.common.Result; import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.request.BaseController; import com.xzx.gc.common.utils.BusinessUtil; import com.xzx.gc.common.utils.IdUtils; import com.xzx.gc.entity.*; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.ExportParamModel; import com.xzx.gc.model.admin.StorageModel; import com.xzx.gc.model.admin.UserModel; import com.xzx.gc.model.admin.XzxCityPartnerModel; import com.xzx.gc.model.order.PackageSiteLimitDto; import com.xzx.gc.user.service.*; import com.xzx.gc.util.PreventManyCommit; 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; 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.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @Api(tags = {"合伙人管理"}) public class CityPartnerController extends BaseController { @Autowired private IdUtils idUtils; @Autowired private CityPartnerService cityPartnerService; @Autowired private SessionUtil sessionUtil; @Autowired private PackageSiteService packageSiteService; @Autowired private BusinessUtil businessUtil; @Autowired private OtherUserService otherUserService; @Autowired private AccountService accountService; @Autowired private PartnerAccountService partnerAccountService; @Autowired private UserService userService; @PostMapping( "/admin/front/cityPartner/getCityPartnerName.json") @ApiOperation(value="生成合伙人账号", notes="test: 仅0有正确返回") public JsonResult getCityPartnerName(HttpServletRequest request){ String id=idUtils.generate("ZH",4); return JsonResult.success(id); } @PostMapping( "/admin/front/cityPartner/addCityPartner.json") @ApiOperation(value="添加合伙人", notes="test: 仅0有正确返回") public JsonResult addCityPartner(@RequestBody XzxCityPartnerModel model, HttpServletRequest request){ JsonResult stringJsonResult = cityPartnerService.addPartner(model); if(stringJsonResult.getCode()==0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("添加合伙人-"+stringJsonResult.getData()).build(); mqUtil.sendApp(build); } return stringJsonResult; } @PostMapping("/admin/front/cityPartner/queryCityPartner.do") @ApiOperation(value="查询合伙人列表(打包站列表 参数看partnerType)", 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 = "name", value = "姓名、手机号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "prohibit", value = "是否禁用(1:禁用,0:启用)", required = true, dataType = "Integer"), @ApiImplicitParam(paramType="query", name = "partnerType", value = "合伙类型(1:合伙人。2:打包站)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "packingStation", value = "打包站名称", required = true, dataType = "String") }) public JsonResult> queryCityPartner(@RequestBody XzxCityPartnerModel model){ Map map = cityPartnerService.queryCityPartner(model); return JsonResult.success(map); } @PostMapping("/admin/front/cityPartner/queryPartnerAccount.json") @ApiOperation(value="查询合伙人账户余额", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "id", value = "合伙人ID(如果不传,需要合伙人登陆)", required = true, dataType = "String"), }) public JsonResult> queryPartnerAccount(@RequestBody XzxCityPartnerModel model){ Map map = new HashMap<>(); if(null!=model){ if(null!=model.getId()&&!"".equals(model.getId())){ map=cityPartnerService.queryPartnerAccount(model.getId()); }else{ CoreUser user = sessionUtil.getCurrentUser(); if(user.getId()==1){ return JsonResult.success(map); }else{ CoreUser user1 = cityPartnerService.queryPartnerAdmin(user.getId()); if(user1!=null){ return JsonResult.success(map); } } CityPartner partner = cityPartnerService.queryById(user.getId()); if(null!=partner){ map=cityPartnerService.queryPartnerAccount(partner.getUserId()); }else{ return JsonResult.success(map); } } }else{ CoreUser user = sessionUtil.getCurrentUser(); if(user.getId()==1){ return JsonResult.success(map); }else{ user = cityPartnerService.queryPartnerAdmin(user.getId()); if(user!=null){ return JsonResult.success(map); } } map=cityPartnerService.queryPartnerAccount(user.getId().toString()); } return JsonResult.success(map); } @PostMapping("/admin/front/cityPartner/updateCityPartner.json") @ApiOperation(value="修改合伙人", notes="test: 仅0有正确返回") public JsonResult updateCityPartner(@RequestBody XzxCityPartnerModel model,HttpServletRequest request){ JsonResult stringJsonResult = cityPartnerService.updatePartner(model); if(stringJsonResult.getCode()==0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("修改合伙人-"+model.getId()).build(); mqUtil.sendApp(build); } return stringJsonResult; } @PostMapping("/admin/front/cityPartner/queryAllPartnerList.do") @ApiOperation(value="查询合伙人和打包站列表", notes="test: 仅0有正确返回") public JsonResult> queryAllPartnerList(){ CoreUser user = sessionUtil.getCurrentUser(); List cityPartners = new ArrayList<>(); if(user.getId()==1){ cityPartners = cityPartnerService.queryAllCityPartnerList(null); }else{ CoreUser user1 = cityPartnerService.queryPartnerAdmin(user.getId()); //CityPartner partner = new CityPartner(); if(user1!=null){ cityPartners = cityPartnerService.queryAllCityPartnerList(null); }else{ //partner.setId(Integer.parseInt(user.getId()+"")); cityPartners = cityPartnerService.queryAllCityPartnerList(user.getId()+""); /*CityPartner partner = cityPartnerService.queryById(user.getId()); cityPartners.add(partner);*/ } } return JsonResult.success(cityPartners); } @PostMapping( "/admin/front/cityPartner/updatePartnerProhibit.json") @ApiOperation(value="后台合伙人是否启用接口", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name ="id", value = "合伙人Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "prohibit", value = "是否启用", required = true, dataType = "String") }) public JsonResult updatePartnerProhibit(@RequestBody XzxCityPartnerModel model,HttpServletRequest request){ JsonResult jsonResult = cityPartnerService.updatePartnerProhibit(model); if(jsonResult.getCode()==0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("后台合伙人是否启用接口-"+model.getId()).build(); mqUtil.sendApp(build); } return jsonResult; } @PostMapping( "/admin/front/cityPartner/queryPartnerName.json") @ApiOperation(value="查询合伙人姓名", notes="test: 仅0有正确返回") public JsonResult> queryPartnerName(){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); List list = cityPartnerService.queryPartnerName(partnerIds); Map map = new HashMap<>(); map.put("data",list); map.put("code",0); return JsonResult.success(map); } @PostMapping( "/admin/front/cityPartner/queryPackageByPartner.json") @ApiOperation(value="查询打包站", notes="test: 仅0有正确返回") public JsonResult> queryPackageByPartner(@RequestBody UserModel model){ List partnerIds = new ArrayList<>(); if(null!=model.getPartnerId()&&!"".equals(model.getPartnerId())){ partnerIds.add(model.getPartnerId()); }else{ partnerIds = cityPartnerService.queryPartnerByCurrent(); } List list = cityPartnerService.queryPackageByPartner(partnerIds); Map map = new HashMap<>(); map.put("data",list); map.put("code",0); return JsonResult.success(map); } /** * 删除 * @param model * @return */ @PostMapping("/admin/front/cityPartner/delPartner.json") @PreventManyCommit(time = 10) @ApiOperation(value="电子围栏管理-删除合伙人", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "id", value = "合伙人Id", dataType = "Integer") }) public JsonResult delPartner(@RequestBody XzxCityPartnerModel model,HttpServletRequest request){ JsonResult stringJsonResult = cityPartnerService.deletePartner(model); if(stringJsonResult.getCode()==0) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("删除合伙人-" + model.getId()).build(); mqUtil.sendApp(build); } return stringJsonResult; } @PostMapping("/packageSite/limit") @ApiOperation(value = "额度管理显示") public Result limit(HttpServletRequest request){ String userId=getUserId(request); PackageSiteLimitDto packageSiteLimitDto=new PackageSiteLimitDto(); List list=new ArrayList<>(); OtherUserInfo byId = otherUserService.findById(userId); AccountInfo byUserId = accountService.findByUserId(userId); byUserId.setName(byId.getName()); if(byUserId==null){ return Result.error(-1,"账户被禁用"); } list.add(byUserId); //打包站id String partnerId = byId.getPartnerId(); PartnerAccount byPartnerId = partnerAccountService.findByPartnerId(partnerId); packageSiteLimitDto.setHbb(businessUtil.changeMoney(byPartnerId.getHbb())); packageSiteLimitDto.setOverdraftLimit(businessUtil.changeMoney(byPartnerId.getOverdraftLimit())); packageSiteLimitDto.setAll(businessUtil.changeMoney(NumberUtil.add(packageSiteLimitDto.getHbb(),packageSiteLimitDto.getOverdraftLimit()))); packageSiteLimitDto.setPartnerAccountId(byPartnerId.getAccount()); List byUserTypeAndPartner = otherUserService.findByUserTypeAndPartner(CommonEnum.打包员.getValue(), partnerId); if(CollUtil.isNotEmpty(byUserTypeAndPartner)){ for (OtherUserInfo otherUserInfo : byUserTypeAndPartner) { AccountInfo byUserId1 = accountService.findByUserId(otherUserInfo.getUserId()); if(byUserId1!=null){ byUserId1.setName(otherUserInfo.getName()); byUserId1.setOverdraftLimit(businessUtil.changeMoney(byUserId1.getOverdraftLimit())); list.add(byUserId1); } } } packageSiteLimitDto.setAccountInfos(list); return Result.success(packageSiteLimitDto); } @PostMapping("/packageSite/limitUpdate") @ApiOperation(value = "修改额度管理") public Result limitUpdate(HttpServletRequest request, @Validated @RequestBody PackageSiteLimitDto packageSiteLimitDto){ Result result = packageSiteService.updateLimit(packageSiteLimitDto); if(result.getCode()==0){ String mobilePhone = userService.findOtherByUserId(getUserId(request),1); OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) .methodName(Constants.ORDER_MODUL_NAME).operateAction("修改额度管理-"+packageSiteLimitDto.getPartnerAccountId()).build(); mqUtil.sendApp(build); } return result; } @PostMapping("/packageSite/find") @ApiOperation(value = "查询所属打包站") public Result find(HttpServletRequest request){ //打包站ID String userId = getUserId(request); OtherUserInfo byId1 = otherUserService.findById(userId); String partnerId = byId1.getPartnerId(); CityPartner byId = cityPartnerService.findById(Convert.toInt(partnerId)); return Result.success(byId); } @PostMapping("/packageSite/limitRecovery") @ApiOperation(value = "打包站恢复额度申请") public Result limitRecovery(HttpServletRequest request){ String userId = getUserId(request); OtherUserInfo byId1 = otherUserService.findById(userId); String partnerId = byId1.getPartnerId(); Result result = packageSiteService.limitRecovery(partnerId, userId); if(result.getCode()==0){ OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(byId1.getMobilePhone()) .methodName(Constants.ORDER_MODUL_NAME).operateAction("打包站恢复额度申请-"+partnerId).build(); mqUtil.sendApp(build); } return result; } /** * 查询入库员数据 * @param userModel * @return */ @PostMapping("/admin/front/packageSite/queryPackageStorageList.do") @ApiOperation(value="数据统计-打包站数据", notes="test: 仅0有正确返回") public JsonResult> queryPackageStorageList(@RequestBody UserModel userModel){ Map resultMap = otherUserService.queryPackageStorageList(userModel); return JsonResult.success(resultMap); } @ApiOperation(value = "打包站导出",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @PostMapping(value = "/admin/front/packageSite/export") public void fileExport(@RequestBody ExportParamModel exportParamModel, HttpServletRequest request, HttpServletResponse response) { List> rows = new ArrayList<>(); //标题 List header = CollUtil.newArrayList("打包站", "手机号", "订单量", "订单入库重量", "订单入库金额", "手动入库重量", "手动入库金额"); rows.add(header); //组装数据 UserModel userModel = new UserModel(exportParamModel); Map result = otherUserService.queryPackageStorageList(userModel); List> storageList = ( List>) result.get("data"); if (CollUtil.isNotEmpty(storageList)) { for (Map m:storageList) { List list = new ArrayList<>(); if(null!=m.get("delFlag")){ if(m.get("delFlag").toString().equals("1")){ m.put("storageName",m.get("storageName").toString()+"(已删除)"); } } list.add(m.get("storageName").toString()); list.add(m.get("storageUserPhone").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("storagemoney").toString()); rows.add(list); } } //导出 export(rows,response); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("打包站导出").build(); mqUtil.sendApp(build); } }