package com.xzx.gc.user.controller; import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.entity.AccountInfo; import com.xzx.gc.entity.RedPaperRule; import com.xzx.gc.entity.UserHeadRelate; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.ExportParamModel; import com.xzx.gc.model.admin.PromoterModel; import com.xzx.gc.model.admin.UserModel; import com.xzx.gc.user.dto.*; import com.xzx.gc.user.mapper.AccountMapper; import com.xzx.gc.user.mapper.RedPaperRuleMapper; import com.xzx.gc.user.mapper.UserHeadRelateMapper; import com.xzx.gc.user.service.DistribService; import com.xzx.gc.user.vo.*; import com.xzx.gc.util.DoubleUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; @RestController @Api(tags = {"分銷系統管理"}) public class AdminDistribController extends BaseController { @Resource private DistribService distribService; @Resource private RedPaperRuleMapper redPaperRuleMapper; @Autowired private AccountMapper accountMapper; @Autowired private UserHeadRelateMapper userHeadRelateMapper; /** * 查看积分运行设置详情 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/scoreSetting.json") @ApiResponses({@ApiResponse( code = 200, message = "success", response = ViewScoreSettingVo.class)}) @ApiOperation(value="运营管理-查看积分运行设置详情", notes="test: 仅0有正确返回") public JsonResult viewScoreSetting(@RequestBody ViewScoreSettingDto viewScoreSettingDto) { ViewScoreSettingVo viewScoreSettingVo = distribService.viewScoreSetting("积分运行设置"); return JsonResult.success(viewScoreSettingVo); } /** * 更新积分运行设置 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/updateScoreSetting.json") @ApiOperation(value="运营管理--更新积分运行设置", notes="test: 仅0有正确返回") public JsonResult updateScoreSetting(@RequestBody UpdateScoreSetting model, HttpServletRequest request) { RedPaperRule redPaperRule = redPaperRuleMapper.selectByRuleName("积分运行设置"); if(ObjectUtil.isEmpty(redPaperRule)){ distribService.addScoreSetting(model); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("运营管理--新增积分运行设置").build(); mqUtil.sendApp(build); }else{ Integer id = model.getId(); if(redPaperRule.getId() != id){ return JsonResult.failMessage("规则不存在!"); } distribService.updateScoreSetting(model); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("运营管理--更新积分运行设置-" + model.getId()).build(); mqUtil.sendApp(build); } return JsonResult.success("操作成功!"); } /** * 查看分銷系統设置详情 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/setting.json") @ApiResponses({@ApiResponse( code = 200, message = "success", response = ViewSettingVo.class)}) @ApiOperation(value="分銷系統管理-查看分銷系統设置详情", notes="test: 仅0有正确返回") public JsonResult viewSetting(@RequestBody ViewSettingDto viewSettingDto) { ViewSettingVo viewSettingVo = distribService.viewSetting("分销规则"); return JsonResult.success(viewSettingVo); } /** * 更新分銷系統设置 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/updateSetting.json") @ApiOperation(value="分銷系統管理--更新分銷系統设置", notes="test: 仅0有正确返回") public JsonResult updateSetting(@RequestBody UpdateSettingDto model, HttpServletRequest request) { RedPaperRule redPaperRule = redPaperRuleMapper.selectByRuleName("分销规则"); if(ObjectUtil.isEmpty(redPaperRule)){ distribService.addSetting(model); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("分銷系統管理--新增分銷系統设置").build(); mqUtil.sendApp(build); }else{ Integer id = model.getId(); if(redPaperRule.getId() != id){ return JsonResult.failMessage("规则不存在!"); } distribService.updateSetting(model); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("分銷系統管理--更新分銷系統设置-" + model.getId()).build(); mqUtil.sendApp(build); } return JsonResult.success("操作成功!"); } @ApiOperation(value = "符合条件待入选团长列表") @ApiResponses( @ApiResponse(code = 200, message = "success", response = DistribListVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/distribList.json") public JsonResult> distribList(@RequestBody DistribListDto distribListDto) { return JsonResult.success(distribService.distribList(distribListDto)); } /** * 新增团长 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/adddistrib.json") @ApiOperation(value="分銷系統管理--新增团长", notes="test: 仅0有正确返回") public JsonResult adddistrib(@RequestBody AdddistribDto model, HttpServletRequest request) { String id = model.getId(); List ids = StrUtil.split(id, ','); // AccountInfo accountInfo = accountMapper.selectByPrimaryKey(id); List accountInfos = accountMapper.selectAccountInfoByIds(ids); if (CollUtil.isNotEmpty(accountInfos)) { for (AccountInfo accountInfo : accountInfos) { // if(ObjectUtil.isEmpty(accountInfo)){ // return JsonResult.failMessage("账户不存在!"); // } if(ObjectUtil.isEmpty(accountInfo.getIsHead()) || accountInfo.getIsHead() == 1){ return JsonResult.failMessage(accountInfo.getAccountName() + "账户不能重复添加!"); } if(ObjectUtil.isEmpty(accountInfo.getDelFlag()) || accountInfo.getDelFlag() == 1){ return JsonResult.failMessage(accountInfo.getAccountName() + "账户已删除!"); } if(ObjectUtil.isEmpty(accountInfo.getIsProhibit()) || "1".equals(accountInfo.getIsProhibit())){ return JsonResult.failMessage(accountInfo.getAccountName() + "账户已冻结!"); } //团员不能当团长 String userId = accountInfo.getUserId(); UserHeadRelate userHeadRelate = userHeadRelateMapper.selectMemberByUserId(userId); if(ObjectUtil.isNotEmpty(userHeadRelate)){ return JsonResult.failMessage(accountInfo.getAccountName() + "账户不能申请成为团长!"); } // distribService.adddistrib(accountInfo.getAccountId()); accountInfo.setIsHead(1); accountMapper.updateByPrimaryKey(accountInfo); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("分銷系統管理--新增团长-"+id).build(); mqUtil.sendApp(build); } return JsonResult.success("操作成功!"); } else { return JsonResult.failMessage("参数错误"); } } @ApiOperation(value = "团长列表") @ApiResponses( @ApiResponse(code = 200, message = "success", response = DistribInfoListVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/distribInfoList.json") public JsonResult> distribInfoList(@RequestBody DistribInfoListDto distribInfoListDto) { return JsonResult.success(distribService.distribInfoList(distribInfoListDto)); } /** * 查看团长信息详情-个人信息 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/viewDistribInfo.json") @ApiResponses({@ApiResponse( code = 200, message = "success", response = ViewDistribInfoVo.class)}) @ApiOperation(value="团长列表-个人信息详情", notes="test: 仅0有正确返回") public JsonResult viewDistribInfo(@RequestBody ViewDistribInfoDto viewDistribInfoDto) { String id = viewDistribInfoDto.getId(); AccountInfo accountInfo = accountMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(accountInfo)){ return JsonResult.failMessage("账户不存在!"); } ViewDistribInfoVo viewDistribInfoVo = distribService.viewDistribInfo(id); return JsonResult.success(viewDistribInfoVo); } @ApiOperation(value = "团长列表-团队信息") @ApiResponses( @ApiResponse(code = 200, message = "success", response = UserHeadInfoVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/userHeadInfoList.json") public JsonResult> userHeadInfoList(@RequestBody UserHeadInfoListDto userHeadInfoListDto) { return JsonResult.success(distribService.userHeadInfoList(userHeadInfoListDto)); } @ApiOperation(value = "团长列表-订单详情") @ApiResponses( @ApiResponse(code = 200, message = "success", response = OrderItemsVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/orderItemsList.json") public JsonResult> orderItemsList(@RequestBody UserHeadInfoListDto userHeadInfoListDto) { return JsonResult.success(distribService.orderItemsList(userHeadInfoListDto)); } /** * 启用禁用团长 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/distrib/prohibitDistrib.json") @ApiOperation(value="分銷系統管理--启用禁用团长", notes="test: 仅0有正确返回") public JsonResult prohibitDistrib(@RequestBody ProhibitDistribDto model, HttpServletRequest request) { String id = model.getId(); AccountInfo accountInfo = accountMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(accountInfo)){ return JsonResult.failMessage("账户不存在!"); } distribService.prohibitDistrib(model); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.USER_MODUL_NAME).operateAction("分銷系統管理--启用禁用团长-"+id).build(); mqUtil.sendApp(build); return JsonResult.success("操作成功!"); } @ApiOperation(value = "团长数据--头部") @ApiResponses( @ApiResponse(code = 200, message = "success", response = DistribDataInfoVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/distribDataInfo.json") public JsonResult distribDataInfo(@RequestBody DistribDataInfoDto distribDataInfoDto) { return JsonResult.success(distribService.distribDataInfo(distribDataInfoDto)); } @ApiOperation(value = "团长数据--列表") @ApiResponses( @ApiResponse(code = 200, message = "success", response = DistribDataListVo.class) ) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/distribDataList.json") public JsonResult> distribDataList(@RequestBody DistribDataListDto distribDataListDto) { return JsonResult.success(distribService.distribDataList(distribDataListDto)); } @ApiOperation(value = "团长数据--列表导出",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @PostMapping(value = Constants.ADMIN_VIEW_PREFIX + "/distrib/distribDataExport.json") public void distribDataExport(@RequestBody ExportDistribDataListDto distribDataListDto, HttpServletRequest request, HttpServletResponse response) { List> rows = new ArrayList<>(); List header=new ArrayList<>(); //标题 header=CollUtil.newArrayList( "团长名称", "手机号", "身份", "团员数量", "交易单数", "累计积分收益", "累计环保币收益", "累计订单重量(kg)","累计订单数量(家电)"); rows.add(header); Map stringObjectMap = distribService.distribDataExport(distribDataListDto); List distribDataListVos = (List) stringObjectMap.get("data"); if (CollUtil.isNotEmpty(distribDataListVos)) { for(DistribDataListVo m : distribDataListVos){ List list = new ArrayList<>(); list.add(m.getNickname()); list.add(m.getPhone()); list.add("团长"); list.add(m.getCnt().toString()); list.add(m.getOrderCnt()); list.add(m.getScore()); list.add(m.getAmount()); list.add(m.getKg()); list.add(m.getJdsl()); 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); } }