package com.ibeetl.admin.console.api;
|
|
import cn.hutool.core.date.format.FastDateFormat;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.ibeetl.admin.console.model.*;
|
import com.ibeetl.admin.console.service.*;
|
import com.ibeetl.admin.console.util.DateUtil;
|
import com.ibeetl.admin.console.util.DoubleUtil;
|
import com.ibeetl.admin.console.web.query.XzxUserRedpaperRuleQuery;
|
import com.ibeetl.admin.core.entity.*;
|
import com.ibeetl.admin.core.file.FileService;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.web.JsonResult;
|
import io.swagger.annotations.*;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
import org.beetl.sql.core.engine.PageQuery;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@RestController
|
@Api(value = "红包设置规则")
|
public class XzxUserRedpaperRuleApi {
|
|
private final Log log = LogFactory.getLog(this.getClass());
|
private static final String MODEL = "/admin/front/xzxUserRedpaperRule";
|
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
@Autowired
|
XzxUserRedpaperRuleService xzxUserRedpaperRuleService;
|
@Autowired
|
XzxUserRedpaperInfoService xzxUserRedpaperInfoService;
|
@Autowired
|
XzxRebateRulePriceService xzxRebateRulePriceService;
|
@Autowired
|
XzxUserShareInfoService xzxUserShareInfoService;
|
@Autowired
|
CorePlatformService platformService;
|
@Autowired
|
XzxCityPartnerService cityPartnerService;
|
|
|
|
|
|
@Autowired
|
FileService fileService;
|
/* 页面 */
|
|
|
|
@PostMapping(MODEL + "/redRuleList.json")
|
@ResponseBody
|
@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 = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleType", value = "规则类型(1:红包规则,2:分享分利规则 3:阶梯返利5:物品返利,7:提成规则)", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String,Object>> redRuleList(@RequestBody XzxUserRedpaperRuleQuery condtion)
|
{
|
CoreUser user = platformService.getCurrentUser();
|
XzxCityPartner partner = cityPartnerService.queryById(user.getId());
|
|
/*if(condtion.getRuleType().equals("7")){
|
if(null==partner){
|
return JsonResult.failMessage("提成规则只能由合伙人设置!");
|
}
|
}*/
|
if(null!=partner){
|
condtion.setPartnerId(partner.getId()+"");
|
}
|
|
PageQuery page = condtion.getPageQuery();
|
Map<String,Object> map = xzxUserRedpaperRuleService.queryByCondition(page,condtion.getRuleType());
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/add.json")
|
@ResponseBody
|
@ApiOperation(value="红包规则-添加红包规则", notes="test: 仅0有正确返回")
|
public JsonResult add(@RequestBody XzxUserRedpaperRuleModel model)
|
{
|
CoreUser user = platformService.getCurrentUser();
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
model.setPartnerId(partnerIds.get(0));
|
}
|
List<XzxUserRedpaperInfo> infoList = new ArrayList<>();
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryRedpaperListStartAndEnd(model.getStartTime(),model.getEndTime());
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许添加红包规则!");
|
}
|
//限制红包金额是否有符合正态分布
|
if(model.getIssuanceRules().equals("0")){
|
String amount = model.getAmount();
|
String surplusNum = model.getRedEnvelopesNum();
|
BigDecimal avg = new BigDecimal(amount).divide(new BigDecimal(surplusNum), 2, RoundingMode.HALF_UP);
|
String minMoney = model.getMinMoney();
|
if(minMoney!=null&&!"".equals(minMoney)){
|
if(new BigDecimal(minMoney).compareTo(avg)>=0){
|
return JsonResult.failMessage("平均金额必须大于最小金额!");
|
}
|
}else{
|
minMoney = model.getRandomAmountAverage().split(",")[0];
|
if(new BigDecimal(minMoney).compareTo(avg)>=0){
|
return JsonResult.failMessage("平均金额必须大于最小金额!");
|
}
|
}
|
}
|
|
//先保存规则
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
XzxUserRedpaperRule rule = objectMapper.convertValue(model, XzxUserRedpaperRule.class);
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setRuleType("1");
|
|
xzxUserRedpaperRuleService.save(rule);
|
|
//通过规则关联红包
|
String amount = model.getAmount();
|
String redEnvelopesNum = model.getRedEnvelopesNum();
|
//金额随机或者金额固定
|
String issuanceRules=model.getIssuanceRules();
|
String randomAmountAverage = model.getRandomAmountAverage();
|
//合伙人设置红包,需要扣除合伙人的环保币余额
|
String result1 = xzxUserRedpaperInfoService.subPartnerAccount(amount);
|
if(null!=result1){
|
return new JsonResult().failMessage(result1);
|
}
|
if(issuanceRules.equals("0")){
|
//金额随机
|
String[] random = randomAmountAverage.split(",");
|
String minRadom = random[0];
|
String maxRadom = random[1];
|
long[] result = DoubleUtil.generate(amount, Integer.parseInt(redEnvelopesNum), maxRadom, minRadom);
|
double total = 0;
|
for (int i = 0; i < result.length; i++) {
|
System.out.println("result[" + i + "]:" + result[i]);
|
double money = (double)result[i]/100.00;
|
System.out.println(money);
|
total += result[i];
|
if(rule.getId()!=null){
|
XzxUserRedpaperInfo info = saveRedPaperInfo(rule.getId(),amount,money);
|
info.setCreateUserId(user.getId()+"");
|
infoList.add(info);
|
}
|
}
|
xzxUserRedpaperInfoService.batchInsertPaperInfo(infoList);
|
total = total/100;
|
}else if(issuanceRules.equals("1")){
|
int num = Integer.parseInt(redEnvelopesNum);
|
//金额固定
|
for (int i = 0; i <num ; i++) {
|
XzxUserRedpaperInfo info =saveRedPaperInfo(rule.getId(),amount,Double.parseDouble(randomAmountAverage));
|
infoList.add(info);
|
}
|
xzxUserRedpaperInfoService.batchInsertPaperInfo(infoList);
|
}
|
//根据规则生成红包
|
return new JsonResult().success();
|
}
|
|
private XzxUserRedpaperInfo saveRedPaperInfo(Integer ruleId,String total,double money){
|
String code = FastDateFormat.getInstance("yyyyMMddHHmmssSSS").format(new Date());
|
XzxUserRedpaperInfo info = new XzxUserRedpaperInfo();
|
info.setCode(code);
|
info.setCreateTime(sdf1.format(new Date()));
|
info.setMoney(new BigDecimal(String.valueOf(money)));
|
info.setTotalAmount(total);
|
info.setRuleId(ruleId.longValue());
|
info.setReceiveFlag(1);
|
return info ;
|
}
|
@PostMapping(MODEL + "/edit.json")
|
@ResponseBody
|
@ApiOperation(value="红包规则-修改红包规则", notes="test: 仅0有正确返回")
|
public JsonResult<String> update(@RequestBody XzxUserRedpaperRuleModel model) {
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryRedpaperListStartAndEnd(model.getStartTime(),model.getEndTime());
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许修改红包规则!");
|
}
|
XzxUserRedpaperRule ru = xzxUserRedpaperRuleService.queryById(model.getId());
|
/*List<XzxUserRedpaperInfo> infoList = new ArrayList<>();
|
//删除原有规则,重新创建规则生成红包
|
ru.setDelFlag(1);
|
boolean success = xzxUserRedpaperRuleService.update(ru);*/
|
//先保存规则
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
XzxUserRedpaperRule rule = objectMapper.convertValue(model, XzxUserRedpaperRule.class);
|
rule.setUpdateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
//rule.setStatus(1);
|
rule.setRuleType("1");
|
rule.setSharingProfitType("REDPAPER_TEXT");
|
rule.setId(ru.getId());
|
xzxUserRedpaperRuleService.update(rule);
|
return new JsonResult().success();
|
//通过规则关联红包
|
/*String amount = model.getAmount();
|
String redEnvelopesNum = model.getRedEnvelopesNum();
|
//金额随机或者金额固定
|
String issuanceRules=model.getIssuanceRules();
|
String randomAmountAverage = model.getRandomAmountAverage();
|
if(issuanceRules.equals("0")){
|
//金额随机
|
String[] random = randomAmountAverage.split(",");
|
String minRadom = random[0];
|
String maxRadom = random[1];
|
long[] result = DoubleUtil.generate(amount, Integer.parseInt(redEnvelopesNum), maxRadom, minRadom);
|
double total = 0;
|
for (int i = 0; i < result.length; i++) {
|
System.out.println("result[" + i + "]:" + result[i]);
|
double money = (double)result[i]/100.00;
|
System.out.println(money);
|
total += result[i];
|
if(rule.getId()!=null){
|
XzxUserRedpaperInfo info = saveRedPaperInfo(rule.getId(),amount,money);
|
infoList.add(info);
|
}
|
}
|
total = total/100;
|
xzxUserRedpaperInfoService.batchInsertPaperInfo(infoList);
|
|
|
}else if(issuanceRules.equals("1")){
|
int num = Integer.parseInt(redEnvelopesNum);
|
//金额固定
|
for (int i = 0; i <num ; i++) {
|
XzxUserRedpaperInfo info =saveRedPaperInfo(rule.getId(),amount,Double.parseDouble(randomAmountAverage));
|
infoList.add(info);
|
}
|
xzxUserRedpaperInfoService.batchInsertPaperInfo(infoList);
|
|
}
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("保存失败");
|
}*/
|
}
|
|
@PostMapping(MODEL + "/delete.json")
|
@ResponseBody
|
@ApiOperation(value="红包记录-删除红包规则(分享分利规则)", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "id", value = "规则Id", required = true, dataType = "Integer")
|
})
|
public JsonResult delete(@RequestBody XzxUserRedpaperRuleModel model) {
|
//查询未领取的红包
|
String redMoney = xzxUserRedpaperInfoService.queryMoneyByRuleId(model.getId()+"");
|
if(redMoney.equals("0")){
|
XzxUserRedpaperRule ru = xzxUserRedpaperRuleService.queryById(model.getId());
|
//删除原有规则,重新创建规则生成红包
|
ru.setDelFlag(1);
|
boolean success = xzxUserRedpaperRuleService.update(ru);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("删除失败");
|
}
|
}else{
|
return JsonResult.failMessage("该规则有未领取的红包,不能删除规则。请返回该红包金额后再删除!");
|
}
|
|
}
|
|
@PostMapping(MODEL + "/isStart.json")
|
@ResponseBody
|
@ApiOperation(value="红包记录-红包规则(是否启用 通用)", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "id", value = "规则Id", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer")
|
|
})
|
public JsonResult isStart(@RequestBody XzxUserRedpaperRuleModel model) {
|
XzxUserRedpaperRule ru = xzxUserRedpaperRuleService.queryById(model.getId());
|
ru.setStatus(model.getStatus());
|
boolean success = xzxUserRedpaperRuleService.update(ru);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("修改失败");
|
}
|
}
|
|
@PostMapping(MODEL + "/queryRebateList.do")
|
@ResponseBody
|
@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<Map<String,Object>> queryRebateList(@RequestBody XzxPlatformCapitalInfoModel model)
|
{
|
Map<String,Object> map =xzxUserRedpaperRuleService.queryRebateList(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/addRebateRule.json")
|
@ResponseBody
|
@ApiOperation(value="阶梯返利-阶梯返利添加", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "rulePriceList", value = "阶梯价格列表", required = true, dataType = "List<XzxRebateRulePrice>"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "conversionPerUnit", value = "每台家电折算重量", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "conversionPerUnitFlag", value = "每台家电折算重量是否启用(0:不启用,1:启用)", required = true, dataType = "String")
|
|
})
|
public JsonResult addRebateRule(@RequestBody XzxUserRebateRuleModel model){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
model.setPartnerId(partnerIds.get(0));
|
}
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryRebateRuleList(model);
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("只能添加一个阶梯规则");
|
}
|
|
List<XzxRebateRulePrice> rulePriceList = model.getRulePriceList();
|
List<String> 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("阶梯价格必须按顺序排列");
|
}
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule.setConversionPerUnit(model.getConversionPerUnit());
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
rule.setRuleName("阶梯价格规则");
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setRuleType("3");
|
rule.setStatus(model.getStatus());
|
rule.setApplicableObject("1");
|
rule.setConversionPerUnitFlag(model.getConversionPerUnitFlag());
|
xzxUserRedpaperRuleService.save(rule);
|
if(rule.getId()!=null){
|
for (int i = 0; i <rulePriceList.size() ; i++) {
|
XzxRebateRulePrice rulePrice = rulePriceList.get(i);
|
rulePrice.setCreateTime(sdf1.format(new Date()));
|
rulePrice.setRuleId(rule.getId());
|
rulePrice.setSort(String.valueOf(i+1));
|
xzxRebateRulePriceService.save(rulePrice);
|
}
|
}
|
return new JsonResult().success();
|
}
|
|
|
@PostMapping(MODEL + "/updateRebateRule.json")
|
@ResponseBody
|
@ApiOperation(value="阶梯返利-阶梯返利修改(重量规则修改)", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "rulePriceList", value = "阶梯价格列表", required = true, dataType = "List<XzxRebateRulePrice>"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "conversionPerUnit", value = "每台家电折算重量", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "conversionPerUnitFlag", value = "每台家电折算重量是否启用(0:不启用,1:启用)", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "id", value = "规则ID", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleType", value = "规则类型", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "weightRateList", value = "重量规则", required = true, dataType = "String")
|
})
|
public JsonResult updateRebateRule(@RequestBody XzxUserRedpaperRuleModel model){
|
//判断时间段内是否相交
|
XzxUserRedpaperRule rule = xzxUserRedpaperRuleService.queryById(model.getId());
|
|
List<XzxRebateRulePrice> rulePriceList = model.getRulePriceList();
|
if(rule.getRuleType().equals("5")){
|
rulePriceList = model.getWeightRateList();
|
}
|
List<String> 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("阶梯价格必须按顺序排列");
|
}
|
rule.setConversionPerUnit(model.getConversionPerUnit());
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
if(rule.getRuleType().equals("5")){
|
rule.setRuleName("重量规则返利");
|
rule.setRuleType("5");
|
if(null!=model.getProductType()&&!"".equals(model.getProductType())){
|
rule.setProductType(model.getProductType());
|
}
|
|
}else{
|
rule.setRuleName("阶梯价格规则");
|
rule.setRuleType("3");
|
}
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setStatus(model.getStatus());
|
rule.setConversionPerUnitFlag(model.getConversionPerUnitFlag());
|
xzxUserRedpaperRuleService.update(rule);
|
|
if(rule.getId()!=null){
|
//删除原有阶梯
|
xzxUserRedpaperRuleService.deleteByRuleId(rule.getId());
|
for (int i = 0; i <rulePriceList.size() ; i++) {
|
XzxRebateRulePrice rulePrice = rulePriceList.get(i);
|
rulePrice.setCreateTime(sdf1.format(new Date()));
|
rulePrice.setRuleId(rule.getId());
|
rulePrice.setSort(String.valueOf(i+1));
|
xzxRebateRulePriceService.save(rulePrice);
|
}
|
}
|
return new JsonResult().success();
|
}
|
|
@PostMapping(MODEL + "/queryShareInfoList.do")
|
@ResponseBody
|
@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 = "name", value = "邀请人", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "mobilePhone", value = "邀请人手机号", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "registerName", value = "被邀请人", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "registerMobilePhone", value = "被邀请人手机号", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String,Object>> queryShareInfoList(@RequestBody XzxUserShareInfoModel model)
|
{
|
Map<String,Object> map =xzxUserShareInfoService.queryShareInfoList(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/queryShareOrderList.json")
|
@ResponseBody
|
@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 = "shareId", value = "分享ID", required = true, dataType = "String"),
|
})
|
public JsonResult<Map<String,Object>> queryShareOrderList(@RequestBody XzxPlatformCapitalInfoModel model)
|
{
|
Map<String,Object> map =xzxUserShareInfoService.queryShareOrderList(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/addShareRule.json")
|
@ResponseBody
|
@ApiOperation(value="分享分利-分享分利添加", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "sharingProfitType", value = "分享分利规则文案(SHARE_RATIO对应第一个文案,COMMISSION_FOR_INVITEES:第二个,DESIGNATED_USER:第三个,多个用逗号分割)", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "shareRatio", value = "分享利益百分比", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "applicableObject", value = "指定用户1:全部用户,2:指定用户", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "designatedWeight", value = "指定用户规则(回收累计重量)", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "issuanceRules", value = "发放规则(0:金额随机,1:金额固定)", required = true, dataType = "String")
|
})
|
public JsonResult addShareRule(@RequestBody XzxUserRedpaperRuleModel model){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
model.setPartnerId(partnerIds.get(0));
|
}
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryShareListByTime(model.getStartTime(),model.getEndTime());
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许添加分享分利规则!");
|
}
|
|
XzxUserRedpaperRule rule = getRedpaperRule(model);
|
boolean success = xzxUserRedpaperRuleService.save(rule);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("添加失败");
|
}
|
}
|
|
@PostMapping(MODEL + "/updateShareRule.json")
|
@ResponseBody
|
@ApiOperation(value="分享分利-分享分利修改", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "sharingProfitType", value = "分享分利规则文案(SHARE_RATIO对应第一个文案,COMMISSION_FOR_INVITEES:第二个,DESIGNATED_USER:第三个,多个用逗号分割)", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "shareRatio", value = "分享利益百分比", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "applicableObject", value = "指定用户1:全部用户,2:指定用户", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "designatedWeight", value = "指定用户规则(回收累计重量)", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "id", value = "id", required = true, dataType = "String")
|
|
})
|
public JsonResult updateShareRule(@RequestBody XzxUserRedpaperRuleModel model){
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryShareListByTime(model.getStartTime(),model.getEndTime());
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许修改分享分利规则!");
|
}
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule = xzxUserRedpaperRuleService.queryById(model.getId());
|
if(rule!=null){
|
rule = getRedpaperRule(model);
|
rule.setId(model.getId());
|
}else{
|
return JsonResult.failMessage("修改失败");
|
}
|
boolean success = xzxUserRedpaperRuleService.update(rule);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("修改失败");
|
}
|
}
|
|
private XzxUserRedpaperRule getRedpaperRule(XzxUserRedpaperRuleModel model){
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule.setId(model.getId());
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
rule.setRuleName(model.getRuleName());
|
if(model.getId()!=null){
|
rule.setUpdateTime(sdf.format(new Date()));
|
}else{
|
rule.setCreateTime(sdf.format(new Date()));
|
}
|
rule.setDelFlag(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(MODEL + "/addWeightRule.json")
|
@ResponseBody
|
@ApiOperation(value="重量返利规则-重量返利规则添加", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "weightRateList", value = "阶梯重量列表(用户返利,合伙人,回收员的返利用逗号隔开)", required = true, dataType = "List<XzxRebateRulePrice>"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "productType", value = "适用物品类型(1:废纸,2:杂纸(多选用逗号隔开))", required = true, dataType = "String")
|
|
})
|
public JsonResult addWeightRule(@RequestBody XzxUserRebateRuleModel model){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
model.setPartnerId(partnerIds.get(0));
|
}
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryWeightRuleList(model);
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("只能添加一个重量返利规则");
|
}
|
|
List<XzxRebateRulePrice> rulePriceList = model.getWeightRateList();
|
List<String> 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("重量必须按顺序排列");
|
}
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
rule.setRuleName("按重量返利规则");
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setRuleType("5");
|
rule.setStatus(model.getStatus());
|
rule.setApplicableObject("1");
|
rule.setProductType(model.getProductType());
|
xzxUserRedpaperRuleService.save(rule);
|
if(rule.getId()!=null){
|
for (int i = 0; i <rulePriceList.size() ; i++) {
|
XzxRebateRulePrice rulePrice = rulePriceList.get(i);
|
rulePrice.setCreateTime(sdf1.format(new Date()));
|
rulePrice.setRuleId(rule.getId());
|
rulePrice.setSort(String.valueOf(i+1));
|
xzxRebateRulePriceService.save(rulePrice);
|
}
|
}
|
return new JsonResult().success();
|
}
|
|
@PostMapping(MODEL + "/queryWeightOrderList.json")
|
@ResponseBody
|
@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 = "nickName", value = "用户昵称或手机号", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String,Object>> queryWeightOrderList(@RequestBody WeightOrderModel model)
|
{
|
Map<String,Object> map =xzxUserShareInfoService.queryWeightOrderList(model);
|
return JsonResult.success(map);
|
}
|
|
|
@PostMapping(MODEL + "/addRoyaltyRule.json")
|
@ResponseBody
|
@ApiOperation(value="添加(修改)提成规则", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "royaltyRuleList", value = "提成规则", required = true, dataType = "List<RebateWeightPriceModel>"),
|
@ApiImplicitParam(paramType="query", name = "packageId", value = "打包员Id", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "productType", value = "3:人工审核,4:自动审核", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "timing", value = "定时执行时间(比如星期一 2点 格式为 1,2)", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "id", value = "规则主键", required = true, dataType = "String")
|
})
|
public JsonResult<String> addRoyaltyRule(@RequestBody XzxUserRebateRuleModel model)
|
{
|
|
CoreUser user = platformService.getCurrentUser();
|
XzxCityPartner partner = cityPartnerService.queryById(user.getId());
|
List<XzxUserRedpaperRule> queryList =new ArrayList<>();
|
|
if(null!=partner){
|
queryList = xzxUserRedpaperRuleService.queryRoyalRuleList(user.getId()+"",model.getPackageId());
|
}else{
|
queryList = xzxUserRedpaperRuleService.queryRoyalRuleList(null,model.getPackageId());
|
}
|
if(queryList!=null&&queryList.size()>0){
|
if(null!=model.getId()){
|
|
|
XzxUserRedpaperRule oldRule = queryList.get(0);
|
|
List<RebateWeightPriceModel> oldItemList = xzxUserShareInfoService.queryOldItemList(oldRule.getId()+"");
|
for (RebateWeightPriceModel oldWp:oldItemList) {
|
oldWp.setStartTime(oldRule.getStartTime());
|
oldWp.setEndTime(model.getStartTime());
|
}
|
xzxUserShareInfoService.insertPriceHistory(oldItemList);
|
xzxUserShareInfoService.deleteByRuleId(oldRule.getId()+"");
|
//将老的规则写入历史数据
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
rule.setRuleName(model.getRuleName());
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setRuleType("7");
|
rule.setStatus(model.getStatus());
|
rule.setApplicableObject("1");
|
rule.setProductType(model.getProductType());
|
rule.setPackageId(model.getPackageId());
|
rule.setPartnerId(user.getId()+"");
|
rule.setId(model.getId());
|
rule.setTiming(model.getTiming());
|
xzxUserRedpaperRuleService.update(rule);
|
List<RebateWeightPriceModel> royaltyRuleList = model.getRoyaltyRuleList();
|
for (RebateWeightPriceModel model1:royaltyRuleList) {
|
model1.setRuleId(oldRule.getId()+"");
|
model1.setPackageId(model.getPackageId());
|
int count =xzxUserShareInfoService.addRoyaltyRule(model1);
|
}
|
return JsonResult.success("修改成功!");
|
}else {
|
return JsonResult.failMessage("不能新增多条规则!");
|
}
|
}else{
|
XzxUserRedpaperRule rule = new XzxUserRedpaperRule();
|
rule.setStartTime(model.getStartTime());
|
rule.setEndTime(model.getEndTime());
|
rule.setRuleName(model.getRuleName());
|
rule.setCreateTime(sdf.format(new Date()));
|
rule.setDelFlag(0);
|
rule.setRuleType("7");
|
rule.setStatus(model.getStatus());
|
rule.setApplicableObject("1");
|
rule.setProductType(model.getProductType());
|
rule.setPackageId(model.getPackageId());
|
rule.setPartnerId(user.getId()+"");
|
rule.setTiming(model.getTiming());
|
xzxUserRedpaperRuleService.save(rule);
|
List<RebateWeightPriceModel> royaltyRuleList = model.getRoyaltyRuleList();
|
for (RebateWeightPriceModel model1:royaltyRuleList) {
|
model1.setRuleId(rule.getId()+"");
|
model1.setPackageId(model.getPackageId());
|
int count =xzxUserShareInfoService.addRoyaltyRule(model1);
|
}
|
return JsonResult.success("添加成功!");
|
}
|
|
}
|
|
@PostMapping(MODEL + "/queryRuleManage.json")
|
@ResponseBody
|
@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 = "name", value = "姓名或手机号", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String,Object>> queryRoyaltyManage(@RequestBody SettlementModel model)
|
{
|
Map<String,Object> map =xzxUserShareInfoService.queryRoyaltyManage(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/updateRoyaltyRule.json")
|
@ResponseBody
|
@ApiOperation(value="提成明细批量审核", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "royaltyList", value = "传入id, status 审核状态(1:未审核,2:已审核 3:异常),price审核金额", required = true, dataType = "List<WeightItemPriceModel>"),
|
@ApiImplicitParam(paramType="query", name = "royaltyMoney", value = "未结算提成", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "settlementMoney", value = "已结算提成", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "receiver", value = "回收员Id", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "flag", value = "是否可以人工审核(true,false)", required = true, dataType = "boolean")
|
})
|
public JsonResult<String> updateRoyaltyRule(@RequestBody SettlementModel model) {
|
//判断是否有开启规则
|
List<String> rule = xzxUserShareInfoService.queryRuleOpen();
|
if(rule.size()==0){
|
return JsonResult.failMessage("规则未生效,请重新设置启用后才能结算.");
|
}
|
int num = xzxUserShareInfoService.updateRoyaltyRule(model);
|
if(num>0){
|
return JsonResult.success("结算成功!");
|
|
}else if(num==-1){
|
return JsonResult.failMessage("合伙人余额不足,结算失败!");
|
}else{
|
return JsonResult.failMessage("结算失败!");
|
}
|
}
|
|
@PostMapping(MODEL + "/queryPackageType.json")
|
@ResponseBody
|
@ApiOperation(value="查询打包站纸类别", notes="test: 仅0有正确返回")
|
public JsonResult<Map<String,Object>> queryPackageType() {
|
Map<String,Object> map = xzxUserShareInfoService.queryPackageType();
|
return JsonResult.success(map);
|
}
|
|
|
@PostMapping(MODEL + "/addCommissionRule.json")
|
@ResponseBody
|
@ApiOperation(value="提佣规则添加", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "shareRatio", value = "每笔订单回收流水百分比", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "applicableObject", value = "指定用户1:全部合伙人", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "issuanceRules", value = "3:系统自动提佣", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleType", value = "规则类型:1:红包规则,2:分享分利规则,3:阶梯返利,5重量返利,7:提成规则,8:提佣规则", required = true, dataType = "String"),
|
})
|
public JsonResult addCommissionRule(@RequestBody XzxUserRedpaperRuleModel model){
|
/*List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryCommissioList();
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("只能添加一个提佣规则");
|
}*/
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryCommListByTime(model.getStartTime(),model.getEndTime(),null);
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许添加提佣规则!");
|
}
|
BigDecimal shareRatio = new BigDecimal(model.getShareRatio());
|
BigDecimal aa = shareRatio.divide(new BigDecimal("100"));
|
model.setShareRatio(aa.toString());
|
XzxUserRedpaperRule rule = getRedpaperRule(model);
|
boolean success = xzxUserRedpaperRuleService.save(rule);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("添加失败");
|
}
|
}
|
@PostMapping(MODEL + "/updateCommissionRule.json")
|
@ResponseBody
|
@ApiOperation(value="提佣规则修改", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "id", value = "规则Id", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "有效开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "有效结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "status", value = "开关0:关闭,1:正常", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "shareRatio", value = "每笔订单回收流水百分比", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleName", value = "规则名称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "applicableObject", value = "指定用户1:全部合伙人", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "issuanceRules", value = "3:系统自动提佣", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "ruleType", value = "规则类型:1:红包规则,2:分享分利规则,3:阶梯返利,5重量返利,7:提成规则,8:提佣规则", required = true, dataType = "String"),
|
})
|
public JsonResult updateCommissionRule(@RequestBody XzxUserRedpaperRuleModel model){
|
//List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryCommissioList();
|
List<XzxUserRedpaperRule> queryList = xzxUserRedpaperRuleService.queryCommListByTime(model.getStartTime(),model.getEndTime(),model.getId()+"");
|
if(queryList!=null&&queryList.size()>0){
|
return JsonResult.failMessage("该时间段内不允许修改提佣规则!");
|
}
|
XzxUserRedpaperRule oldRule = xzxUserRedpaperRuleService.queryById(model.getId());
|
BigDecimal shareRatio = new BigDecimal(model.getShareRatio());
|
BigDecimal aa = shareRatio.divide(new BigDecimal("100"));
|
model.setShareRatio(aa.toString());
|
XzxUserRedpaperRule rule = getRedpaperRule(model);
|
boolean success = xzxUserRedpaperRuleService.update(rule);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("添加失败");
|
}
|
}
|
|
@PostMapping(MODEL + "/queryAccountList.json")
|
@ResponseBody
|
@ApiOperation(value="提佣规则数据列表", notes="test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "limit", value = "条数", required = true, dataType = "Integer"),
|
@ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType="query", name = "partnerName", value = "城市合伙人姓名/手机号", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String,Object>> queryAccountList(@RequestBody CommissionModel model) {
|
|
Map<String,Object> result = xzxUserRedpaperRuleService.queryAccountList(model);
|
return JsonResult.success(result);
|
}
|
|
public JsonResult deleteCommissionRule(@RequestBody XzxUserRedpaperRuleModel model) {
|
XzxUserRedpaperRule ru = xzxUserRedpaperRuleService.queryById(model.getId());
|
//删除原有规则,重新创建规则生成红包
|
ru.setDelFlag(1);
|
boolean success = xzxUserRedpaperRuleService.update(ru);
|
if (success) {
|
return new JsonResult().success();
|
} else {
|
return JsonResult.failMessage("删除失败");
|
}
|
}
|
}
|