package com.xzx.gc.order.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; 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.UserEnum; import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.exception.RestException; import com.xzx.gc.common.request.BaseController; import com.xzx.gc.common.utils.BusinessUtil; import com.xzx.gc.common.utils.DateUtils; 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.order.QueryRuleManageDetailDTO; import com.xzx.gc.model.order.RuleParamDto; import com.xzx.gc.model.order.SettlePageDTO; import com.xzx.gc.model.order.UpdateRoyaltyRuleDTO; import com.xzx.gc.model.query.XzxUserRedpaperRuleQuery; import com.xzx.gc.order.dto.RuleDto; import com.xzx.gc.order.service.*; import com.xzx.gc.util.DateUtil; 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.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 java.math.BigDecimal; import java.sql.Struct; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author :zz */ @RestController @Api(tags = {"规则管理"}) @Validated public class RuleController extends BaseController { @Autowired private RedPaperRuleService redPaperRuleService; @Autowired private RedPaperService redPaperService; @Autowired private RuleService ruleService; @Autowired SessionUtil sessionUtil; @Autowired CityPartnerService cityPartnerService; @Autowired RebateRuleService rebateRuleService; @Autowired UserShareService userShareService; @Autowired private AddressService addressService; @Autowired private PartnerGaodeService partnerGaodeService; @Autowired private WeightItemPriceService weightItemPriceService; @Autowired private BusinessUtil businessUtil; @PostMapping("/rule/findShareRebate") @ApiOperation(value = "查询分享返利的规则", notes = "extra:经纬度逗号拼接") @PassToken public Result findShareRebate(HttpServletRequest request, @RequestBody RuleParamDto ruleParamDto) { String userId = getUserId(request); UserInfo userInfo = null; String partnerId = null; if (StrUtil.isBlank(userId)) { if (StrUtil.isBlank(ruleParamDto.getExtra())) { return Result.error(-3, "未发现分享返利规则"); } AddressInfo byLon = addressService.getByLon(ruleParamDto.getExtra().split(",")[0], ruleParamDto.getExtra().split(",")[1]); if (byLon != null) { partnerId = partnerGaodeService.findPartnerIdByAddress(byLon); } } else { partnerId = partnerGaodeService.findPartnerIdByUserId(userId, 0); } if (partnerId != null) { RedPaperRule one = redPaperRuleService.getOne(UserEnum.分享分利规则.getValue(), partnerId); if (one != null) { RuleDto ruleDto = new RuleDto(); ruleDto.setScale(one.getShareRatio()); UserInfo userInfo1 = new UserInfo(); if (userInfo != null) { userInfo1.setMobilePhone(businessUtil.changeMobile(userInfo.getMobilePhone())); } ruleDto.setUserinfo(userInfo1); return Result.success(ruleDto); } } return Result.error(-3, "未发现分享返利规则"); } @PostMapping("/rule/findStepRebate") @ApiOperation(value = "查询阶梯返利的规则") public Result findStepRebate(HttpServletRequest request, @RequestBody RuleParamDto ruleParamDto) { String userId = getUserId(request); String partnerId = partnerGaodeService.findPartnerIdByUserId(userId, ruleParamDto.getType()); RuleDto ruleDto = ruleService.findStepRebate(userId, false, partnerId); return Result.success(ruleDto); } @PostMapping("/rule/findWeightRebate") @ApiOperation(value = "查询重量返利的规则") public Result findWeightRebate(HttpServletRequest request, @RequestBody RuleParamDto ruleParamDto) { RuleDto ruleDto = new RuleDto(); String partnerIdByUserId = partnerGaodeService.findPartnerIdByUserId(getUserId(request), ruleParamDto.getType()); RedPaperRule one = redPaperRuleService.getOne(UserEnum.重量返利规则.getValue(), partnerIdByUserId); if (one != null) { List rebateRules = ruleService.getRebateRules(one); ruleDto.setRebateRules(rebateRules); String s = ruleService.changeProductType(one.getProductType()); ruleDto.setProductType(s); } return Result.success(ruleDto); } @PostMapping( "/admin/front/xzxUserRedpaperRule/redRuleList.json") @ApiOperation(value = "红包记录-红包规则", notes = "test: 仅0有正确返回") public JsonResult> redRuleList(@RequestBody XzxUserRedpaperRuleQuery condtion) { CoreUser user = sessionUtil.getCurrentUser(); if (StrUtil.isBlank(condtion.getPartnerId())) { CityPartner partner = cityPartnerService.queryById(user.getId()); if (null != partner) { condtion.setPartnerId(partner.getId() + ""); } } Map map = redPaperRuleService.queryByCondition(condtion, condtion.getRuleType()); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/add.json") @ApiOperation(value = "红包规则-添加红包规则", notes = "test: 仅0有正确返回") public JsonResult add(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { JsonResult jsonResult = redPaperService.addRedPaper(model); if (jsonResult.getCode() == 0) { //根据规则生成红包 OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("添加红包规则-" + jsonResult.getData()).build(); mqUtil.sendApp(build); } return jsonResult; } @PostMapping( "/admin/front/xzxUserRedpaperRule/edit.json") @ApiOperation(value = "红包规则-修改红包规则", notes = "test: 仅0有正确返回") public JsonResult update(@RequestBody Map map, HttpServletRequest request) { JsonResult jsonResult = redPaperService.updateRedPaper(map); if (jsonResult.getCode() == 0) { //根据规则生成红包 OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("修改红包规则-" + jsonResult.getData()).build(); mqUtil.sendApp(build); } return jsonResult; } @PostMapping( "/admin/front/xzxUserRedpaperRule/delete.json") @ApiOperation(value = "红包记录-删除红包规则(分享分利规则)", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "id", value = "规则Id", required = false, dataType = "Integer") }) public JsonResult delete(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { //先退回再删除 CoreUser user = sessionUtil.getCurrentUser(); CityPartner partner = cityPartnerService.queryById(user.getId()); RedPaperRule rule = redPaperRuleService.queryById(model.getId()); if (rule.getRuleType().equals("1")) { String msg = redPaperService.cancelRedPaper1(partner, rule.getRuleType()); if (null != msg) { return JsonResult.failMessage(msg); } } RedPaperRule ru = redPaperRuleService.queryById(model.getId()); //删除原有规则,重新创建规则生成红包 ru.setDelFlag((short) 1); boolean success = redPaperRuleService.update(ru); if (rule.getRuleType().equals("1")) { redPaperService.deletePaperByRuleId(ru.getId()); } else if (rule.getRuleType().equals("3")) { redPaperService.deleteJtRuleId(ru.getId()); } if (success) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("删除红包规则-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } else { return JsonResult.failMessage("删除失败"); } } @PostMapping( "/admin/front/xzxUserRedpaperRule/isStart.json") @ApiOperation(value = "红包记录-规则(是否启用 通用)", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "id", value = "规则Id", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer") }) public JsonResult isStart(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { JsonResult objectJsonResult = redPaperService.openRule(model); if (objectJsonResult.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 objectJsonResult; } @PostMapping( "/admin/front/xzxUserRedpaperRule/queryRebateList.do") @ApiOperation(value = "阶梯返利(查询列表)", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "mobilePhone", value = "手机号(昵称)", required = false, dataType = "String") }) public JsonResult> queryRebateList(@RequestBody XzxPlatformCapitalInfoModel model) { Map map = redPaperRuleService.queryRebateList(model); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/queryShareInfoList.do") @ApiOperation(value = "分享分利", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "name", value = "邀请人", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "mobilePhone", value = "邀请人手机号", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "registerName", value = "被邀请人", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "registerMobilePhone", value = "被邀请人手机号", required = false, dataType = "String") }) public JsonResult> queryShareInfoList(@RequestBody XzxUserShareInfoModel model) { Map map = userShareService.queryShareInfoList(model); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/queryShareOrderList.json") @ApiOperation(value = "分享分利-下单详情", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "shareId", value = "邀请人ID", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "invitedUserId", value = "被邀请人ID", required = false, dataType = "String"), }) public JsonResult> queryShareOrderList(@RequestBody XzxPlatformCapitalInfoModel model) { Map map = userShareService.queryShareOrderList(model); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/addShareRule.json") @ApiOperation(value = "分享分利-分享分利添加", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "sharingProfitType", value = "分享分利规则文案(SHARE_RATIO对应第一个文案,COMMISSION_FOR_INVITEES:第二个,DESIGNATED_USER:第三个,多个用逗号分割)", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "shareRatio", value = "分享利益百分比", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "applicableObject", value = "指定用户1:全部用户,2:指定用户", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "designatedWeight", value = "指定用户规则(回收累计重量)", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "issuanceRules", value = "发放规则(0:金额随机,1:金额固定)", required = false, dataType = "String") }) public JsonResult addShareRule(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { model.setPartnerId(partnerIds.get(0)); } else { throw new RestException("非法操作"); } redPaperService.checkRuleTime(model, UserEnum.分享分利规则.getValue()); RedPaperRule rule = getRedpaperRule(model); rule.setPartnerId(partnerIds.get(0)); boolean success = redPaperRuleService.save(rule); if (success) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("分享分利添加-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } else { return JsonResult.failMessage("添加失败"); } } @PostMapping( "/admin/front/xzxUserRedpaperRule/updateShareRule.json") @ApiOperation(value = "分享分利-分享分利修改", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "sharingProfitType", value = "分享分利规则文案(SHARE_RATIO对应第一个文案,COMMISSION_FOR_INVITEES:第二个,DESIGNATED_USER:第三个,多个用逗号分割)", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "shareRatio", value = "分享利益百分比", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "applicableObject", value = "指定用户1:全部用户,2:指定用户", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "designatedWeight", value = "指定用户规则(回收累计重量)", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "id", value = "id", required = false, dataType = "String") }) public JsonResult updateShareRule(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds) { model.setPartnerId(partnerIds.get(0)); } else { throw new RestException("非法操作"); } redPaperService.checkRuleTime(model, UserEnum.分享分利规则.getValue()); RedPaperRule rule = new RedPaperRule(); rule = redPaperRuleService.queryById(model.getId()); if (rule != null) { rule = getRedpaperRule(model); rule.setId(model.getId()); } else { return JsonResult.failMessage("修改失败"); } boolean success = redPaperRuleService.update(rule); if (success) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("分享分利或重量返利修改-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } else { return JsonResult.failMessage("修改失败"); } } private RedPaperRule getRedpaperRule(XzxUserRedpaperRuleModel model) { RedPaperRule rule = new RedPaperRule(); rule.setId(model.getId()); rule.setStartTime(model.getStartTime()); rule.setEndTime(model.getEndTime()); rule.setRuleName(model.getRuleName()); if (model.getId() != null) { rule.setUpdateTime(cn.hutool.core.date.DateUtil.now()); } else { rule.setCreateTime(cn.hutool.core.date.DateUtil.now()); } rule.setDelFlag((short) 0); if (null != model.getRuleType() && !"".equals(model.getRuleType())) { rule.setRuleType(model.getRuleType()); } else { rule.setRuleType("2"); } rule.setSharingProfitType(model.getSharingProfitType()); rule.setShareRatio(model.getShareRatio()); rule.setStatus(model.getStatus()); rule.setRuleName(model.getRuleName()); rule.setApplicableObject(model.getApplicableObject()); rule.setDesignatedWeight(model.getDesignatedWeight()); rule.setIssuanceRules(model.getIssuanceRules()); return rule; } @PostMapping( "/admin/front/xzxUserRedpaperRule/addWeightRule.json") @ApiOperation(value = "重量返利规则-重量返利规则添加", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "weightRateList", value = "阶梯重量列表(用户返利,合伙人,回收员的返利用逗号隔开)", required = false, dataType = "List"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "productType", value = "适用物品类型(1:废纸,2:杂纸(多选用逗号隔开))", required = false, dataType = "String") }) public JsonResult addWeightRule(@RequestBody XzxUserRebateRuleModel model, HttpServletRequest request) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { model.setPartnerId(partnerIds.get(0)); } else { throw new RestException("非法操作"); } // List queryList = redPaperRuleService.queryWeightRuleList(model); // if (queryList != null && queryList.size() > 0) { // return JsonResult.failMessage("只能添加一个重量返利规则"); // } //查看是否有开启的重量返利 // if (model.getStatus() == 1) { // List queryRebateList = redPaperRuleService.queryRebateRuleList(model); // if (queryRebateList != null && queryRebateList.size() > 0) { // return JsonResult.failMessage("阶梯返利规则和重量返利不能同时开启!"); // } // } XzxUserRedpaperRuleModel model1 = new XzxUserRedpaperRuleModel(); BeanUtil.copyProperties(model, model1); redPaperService.checkRuleTime(model1, UserEnum.重量返利规则.getValue()); try { redPaperService.checkRuleTime(model1, UserEnum.阶梯返利规则.getValue()); } catch (RestException e) { return JsonResult.failMessage("阶梯返利规则和重量返利不能同时开启"); } List rulePriceList = model.getWeightRateList(); List priceList = new ArrayList<>(); for (int i = 0; i < rulePriceList.size(); i++) { priceList.add(rulePriceList.get(i).getWeight()); } boolean bool = DateUtil.isSorted(priceList, priceList.size()); if (!bool) { return JsonResult.failMessage("重量必须按顺序排列"); } RedPaperRule rule = new RedPaperRule(); rule.setStartTime(model.getStartTime()); rule.setEndTime(model.getEndTime()); rule.setRuleName("按重量返利规则"); rule.setCreateTime(cn.hutool.core.date.DateUtil.now()); rule.setDelFlag((short) 0); rule.setRuleType("5"); rule.setStatus(model.getStatus()); rule.setApplicableObject("1"); rule.setProductType(model.getProductType()); rule.setPartnerId(model.getPartnerId()); redPaperRuleService.save(rule); if (rule.getId() != null) { for (int i = 0; i < rulePriceList.size(); i++) { RebateRule rulePrice = rulePriceList.get(i); rulePrice.setCreateTime(cn.hutool.core.date.DateUtil.now()); rulePrice.setRuleId(Long.parseLong(rule.getId() + "")); rulePrice.setSort(String.valueOf(i + 1)); rulePrice.setDelFlag((short) 0); rebateRuleService.save(rulePrice); } } OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("重量返利规则添加-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } @PostMapping( "/admin/front/xzxUserRedpaperRule/addRebateRule.json") @ApiOperation(value = "阶梯返利-阶梯返利添加", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "rulePriceList", value = "阶梯价格列表", required = false, dataType = "List"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "conversionPerUnit", value = "每台家电折算重量", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "conversionPerUnitFlag", value = "每台家电折算重量是否启用(0:不启用,1:启用)", required = false, dataType = "String") }) public JsonResult addRebateRule(@RequestBody XzxUserRebateRuleModel model, HttpServletRequest request) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { model.setPartnerId(partnerIds.get(0)); } else { throw new RestException("非法操作"); } // List queryList = redPaperRuleService.queryRebateRuleList(model); // if (queryList != null && queryList.size() > 0) { // return JsonResult.failMessage("只能添加一个阶梯规则!"); // } //查看是否有开启的重量返利 // if (model.getStatus() == 1) { // List queryWeightList = redPaperRuleService.queryWeightRuleList(model); // if (queryWeightList != null && queryWeightList.size() > 0) { // return JsonResult.failMessage("阶梯返利规则和重量返利不能同时开启!"); // } // } XzxUserRedpaperRuleModel model1 = new XzxUserRedpaperRuleModel(); BeanUtil.copyProperties(model, model1); redPaperService.checkRuleTime(model1, UserEnum.阶梯返利规则.getValue()); try { redPaperService.checkRuleTime(model1, UserEnum.重量返利规则.getValue()); } catch (RestException e) { return JsonResult.failMessage("阶梯返利规则和重量返利不能同时开启"); } List rulePriceList = model.getRulePriceList(); List priceList = new ArrayList<>(); for (int i = 0; i < rulePriceList.size(); i++) { priceList.add(rulePriceList.get(i).getRate()); } boolean bool = DateUtil.isSorted(priceList, priceList.size()); if (!bool) { return JsonResult.failMessage("阶梯价格必须按顺序排列"); } RedPaperRule rule = new RedPaperRule(); rule.setConversionPerUnit(model.getConversionPerUnit()); rule.setStartTime(model.getStartTime()); rule.setEndTime(model.getEndTime()); rule.setRuleName("阶梯价格规则"); rule.setCreateTime(cn.hutool.core.date.DateUtil.now()); rule.setDelFlag((short) 0); rule.setRuleType("3"); rule.setStatus(model.getStatus()); rule.setApplicableObject("1"); rule.setConversionPerUnitFlag(model.getConversionPerUnitFlag()); rule.setPartnerId(model.getPartnerId()); rule.setSharingProfitType("REBATE_ONE,REBATE_TWO,REBATE_THREE"); redPaperRuleService.save(rule); if (rule.getId() != null) { for (int i = 0; i < rulePriceList.size(); i++) { RebateRule rulePrice = rulePriceList.get(i); rulePrice.setCreateTime(cn.hutool.core.date.DateUtil.now()); rulePrice.setRuleId(Long.parseLong(rule.getId() + "")); rulePrice.setSort(String.valueOf(i + 1)); rulePrice.setDelFlag((short) 0); rebateRuleService.save(rulePrice); } } OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("阶梯返利添加-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } @PostMapping( "/admin/front/xzxUserRedpaperRule/updateRebateRule.json") @ApiOperation(value = "阶梯返利-阶梯返利修改(重量规则修改)", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "rulePriceList", value = "阶梯价格列表", required = false, dataType = "List"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "conversionPerUnit", value = "每台家电折算重量", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "conversionPerUnitFlag", value = "每台家电折算重量是否启用(0:不启用,1:启用)", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "id", value = "规则ID", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleType", value = "规则类型", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "weightRateList", value = "重量规则", required = false, dataType = "String") }) public JsonResult updateRebateRule(@RequestBody Map map, HttpServletRequest request) { JsonResult jsonResult = redPaperService.updateRebateRule(map); if (jsonResult.getCode() == 0) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("阶梯返利修改(重量规则修改)-" + jsonResult.getData()).build(); mqUtil.sendApp(build); } return jsonResult; } @PostMapping( "/admin/front/xzxUserRedpaperRule/queryWeightOrderList.json") @ApiOperation(value = "重量返利-下单详情", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = false, dataType = "int"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "nickName", value = "用户昵称或手机号", required = false, dataType = "String") }) public JsonResult> queryWeightOrderList(@RequestBody WeightOrderModel model) { Map map = userShareService.queryWeightOrderList(model); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/addRoyaltyRule.json") @ApiOperation(value = "添加(修改)提成规则", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "royaltyRuleList", value = "提成规则", required = false, dataType = "List"), @ApiImplicitParam(paramType = "query", name = "packageId", value = "打包员Id", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "productType", value = "3:人工审核,4:自动审核", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "timing", value = "定时执行时间(比如星期一 2点 格式为 1,2)", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "id", value = "规则主键", required = false, dataType = "String") }) public JsonResult addRoyaltyRule(@RequestBody XzxUserRebateRuleModel model, HttpServletRequest request) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { model.setPartnerId(partnerIds.get(0)); } else { throw new RestException("非法操作"); } //时间交叉判断 XzxUserRedpaperRuleModel model2 = new XzxUserRedpaperRuleModel(); BeanUtil.copyProperties(model, model2); redPaperService.checkRuleTime(model2, UserEnum.提成规则.getValue()); if (StrUtil.isNotBlank(model.getPackageId())) { JsonResult stringJsonResult = weightItemPriceService.addRoyaltyRule(model); if(stringJsonResult.getCode()==0) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("添加(修改)提成规则-" + stringJsonResult.getData()).build(); mqUtil.sendApp(build); } return stringJsonResult; } else { return JsonResult.failMessage("打包站不能为空!"); } } @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/xzxUserRedpaperRule/queryPackageType.json") @ResponseBody @ApiOperation(value = "查询打包站纸类别", notes = "test: 仅0有正确返回") public JsonResult> queryPackageType(@RequestBody XzxCityPartnerModel model) { String packageId = ""; if (null != model) { packageId = model.getId(); } Map map = userShareService.queryPackageType(packageId); return JsonResult.success(map); } @PostMapping( "/admin/front/xzxUserRedpaperRule/addCommissionRule.json") @ApiOperation(value = "提佣规则添加", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "shareRatio", value = "每笔订单回收流水百分比", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "applicableObject", value = "指定用户1:全部合伙人", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "issuanceRules", value = "3:系统自动提佣", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleType", value = "规则类型:1:红包规则,2:分享分利规则,3:阶梯返利,5重量返利,7:提成规则,8:提佣规则", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "partnerId", value = "合伙人ID", required = false, dataType = "String"), }) public JsonResult addCommissionRule(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { redPaperService.checkRuleTime(model, UserEnum.提佣规则.getValue()); BigDecimal shareRatio = new BigDecimal(model.getShareRatio()); BigDecimal aa = shareRatio.divide(new BigDecimal("100")); model.setShareRatio(aa.toString()); RedPaperRule rule = getRedpaperRule(model); rule.setPartnerId(model.getPartnerId()); boolean success = redPaperRuleService.save(rule); if (success) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("提佣规则添加-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } else { return JsonResult.failMessage("添加失败"); } } @PostMapping( "/admin/front/xzxUserRedpaperRule/updateCommissionRule.json") @ApiOperation(value = "提佣规则修改", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "id", value = "规则Id", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "有效开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "有效结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "status", value = "开关0:关闭,1:正常", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "shareRatio", value = "每笔订单回收流水百分比", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleName", value = "规则名称", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "applicableObject", value = "指定用户1:全部合伙人", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "issuanceRules", value = "3:系统自动提佣", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "ruleType", value = "规则类型:1:红包规则,2:分享分利规则,3:阶梯返利,5重量返利,7:提成规则,8:提佣规则", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "partnerId", value = "合伙人ID", required = false, dataType = "String"), }) public JsonResult updateCommissionRule(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { //List queryList = redPaperRuleService.queryCommissioList(); // List queryList = redPaperRuleService.queryCommListByTime(model.getStartTime(), model.getEndTime(), model.getId() + ""); // if (queryList != null && queryList.size() > 0) { // return JsonResult.failMessage("该时间段内不允许修改提佣规则!"); // } redPaperService.checkRuleTime(model, UserEnum.提佣规则.getValue()); BigDecimal shareRatio = new BigDecimal(model.getShareRatio()); BigDecimal aa = shareRatio.divide(new BigDecimal("100")); model.setShareRatio(aa.toString()); RedPaperRule rule = getRedpaperRule(model); rule.setPartnerId(model.getPartnerId()); boolean success = redPaperRuleService.update(rule); if (success) { OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("提佣规则修改-" + rule.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } else { return JsonResult.failMessage("添加失败"); } } @PostMapping( "/admin/front/xzxUserRedpaperRule/queryAccountList.json") @ApiOperation(value = "提佣规则数据列表", notes = "test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "limit", value = "条数", required = false, dataType = "Integer"), @ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = false, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "partnerName", value = "城市合伙人姓名/手机号", required = false, dataType = "String") }) public JsonResult> queryAccountList(@RequestBody CommissionModel model) { Map result = redPaperRuleService.queryAccountList(model); return JsonResult.success(result); } @PostMapping( "/admin/front/xzxUserRedpaperRule/deleteCommissionRule.json") @ApiOperation(value = "提佣规则删除", notes = "test: 仅0有正确返回") public JsonResult deleteCommissionRule(@RequestBody XzxUserRedpaperRuleModel model, HttpServletRequest request) { RedPaperRule ru = redPaperRuleService.queryById(model.getId()); //删除原有规则,重新创建规则生成红包 ru.setDelFlag((short) 1); redPaperRuleService.update(ru); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ORDER_MODUL_NAME).operateAction("提佣规则删除-" + model.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } }