package com.ibeetl.admin.console.service; import com.ibeetl.admin.console.dao.FundManagementApiDao; import com.ibeetl.admin.console.dao.XzxUserRedpaperRuleDao; import com.ibeetl.admin.console.dao.XzxUserShareInfoDao; import com.ibeetl.admin.console.model.CommissionModel; import com.ibeetl.admin.console.model.RebateWeightPriceModel; import com.ibeetl.admin.console.model.XzxPlatformCapitalInfoModel; import com.ibeetl.admin.console.model.XzxUserRedpaperPriceModel; import com.ibeetl.admin.console.util.DoubleUtil; import com.ibeetl.admin.core.entity.XzxCityPartner; import com.ibeetl.admin.core.entity.XzxRebateRulePrice; import com.ibeetl.admin.core.entity.XzxUserRedpaperRule; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.util.PlatformException; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.ibeetl.admin.console.model.XzxUserRebateRuleModel; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service @Transactional public class XzxUserRedpaperRuleService extends CoreBaseService{ @Autowired private XzxUserRedpaperRuleDao xzxUserRedpaperRuleDao; @Autowired private FundManagementApiDao fundManagementApiDao; @Autowired private XzxUserShareInfoDao xzxUserShareInfoDao; @Autowired XzxUserShareInfoService xzxUserShareInfoService; @Autowired XzxCityPartnerService cityPartnerService; final Base64 base64 = new Base64(); public Map queryByCondition(PageQuery query, String ruleType){ PageQuery ret = xzxUserRedpaperRuleDao.queryByCondition(query); List priceList = new ArrayList<>(); List list = ret.getList(); if(ruleType.equals("3")){ for (XzxUserRedpaperRule rule:list) { XzxUserRedpaperPriceModel model = new XzxUserRedpaperPriceModel(rule); List rulePriceList =xzxUserRedpaperRuleDao.queryRebateRulePriceList(String.valueOf(rule.getId())); model.setRulePriceList(rulePriceList); model.setApplicableObject(rule.getApplicableObject()); //文案文字返回 String sharingProfitType = rule.getSharingProfitType(); if(sharingProfitType!=null){ String[] types = sharingProfitType.split(","); StringBuffer typeDesc = new StringBuffer(); String aa=""; String demo=""; for (String type:types) { String desc =fundManagementApiDao.queryTypeDesc(type); int a=1; for (XzxRebateRulePrice p:rulePriceList) { if(typeDesc.toString()!=null&&!"".equals(typeDesc.toString())){ if(type.equals("REBATE_TWO")){ if(a>=2){ typeDesc.append(";").append(a+"、"+demo).append(p.getWeight()).append("kg,").append(desc).append(p.getRate()).append("%"); }else{ typeDesc.append(desc).append(p.getRate()).append("%"); } }else if(type.equals("REBATE_THREE")){ aa=desc; } a=a+1; }else{ demo=desc; typeDesc.append(a+"、"+desc).append(p.getWeight()).append("kg,"); } //break; } } typeDesc.append(",").append((rulePriceList.size()+1)+"、").append(aa).append(model.getConversionPerUnit()).append("kg"); model.setTypeDesc(typeDesc.toString()); } priceList.add(model); } }else if(ruleType.equals("8")){ for (XzxUserRedpaperRule rule:list) { XzxUserRedpaperPriceModel model = new XzxUserRedpaperPriceModel(rule); StringBuffer typeDesc = new StringBuffer(); BigDecimal radio = new BigDecimal(rule.getShareRatio()); BigDecimal showRadio = radio.multiply(new BigDecimal("100")); typeDesc.append("城市合伙人每笔订单成交,总部收取每笔订单回收流水的").append(DoubleUtil.subZeroAndDot(showRadio.toString())); typeDesc.append("%,做为平台服务费。"); model.setTypeDesc(typeDesc.toString()); model.setShareRatio(showRadio.toString()); priceList.add(model); } }else{ for (XzxUserRedpaperRule rule:list) { XzxUserRedpaperPriceModel model = new XzxUserRedpaperPriceModel(rule); //文案文字返回 String sharingProfitType = rule.getSharingProfitType(); model.setApplicableObject(rule.getApplicableObject()); if(ruleType.equals("2")){ if(sharingProfitType!=null){ String[] types = sharingProfitType.split(","); StringBuffer typeDesc = new StringBuffer(); for (String type:types) { String desc =fundManagementApiDao.queryTypeDesc(type); if(typeDesc.toString()!=null&&!"".equals(typeDesc.toString())){ typeDesc.append(",").append(desc); }else{ if(type.equals("SHARE_RATIO")){ typeDesc.append(desc).append(model.getShareRatio()).append("%"); }else{ typeDesc.append(desc); } } } model.setTypeDesc(typeDesc.toString()); } }else{ if(ruleType.equals("5")){ StringBuffer str = new StringBuffer(); String productType=""; String rate=""; List wl = fundManagementApiDao.queryWtList(rule.getId()+""); model.setProductType(rule.getProductType()); String[] types = rule.getProductType().split(","); List rulePriceList = new ArrayList<>(); for (int i=0;i itemList = xzxUserShareInfoService.queryOldItemList(rule.getId()+""); for (RebateWeightPriceModel mm:itemList) { String title = xzxUserShareInfoDao.queryGoodsById(mm.getProductType()); mm.setProductName(title); str.append(title).append(":").append(mm.getMoney()).append("元/公斤,"); } model.setRoyaltyRuleList(itemList); String rType = rule.getProductType(); if(null!=rType){ String[] itemType = rType.split(","); if(itemType[0].equals("3")){ str.append("2、可以人工结算提成;"); } if(itemType[0].equals("4")){ String timming = rule.getTiming(); String[] trs = timming.split(","); str.append("3、每周").append(trs[0]).append(" ").append(trs[1]).append("点系统自动结算提成"); } } model.setTypeDesc(str.toString()); }else{ StringBuffer str = new StringBuffer(); if(model.getIssuanceRules().equals("0")){ double totald = Double.parseDouble(model.getAmount())*100; long total =new Double(totald).longValue(); int count = Integer.parseInt(model.getRedEnvelopesNum()); long average = total / count; String[] pri = model.getRandomAmountAverage().split(","); str.append("1、发放金额随机,金额范围为").append(model.getRandomAmountAverage()).append("元;平均为").append(average).append("元"); str.append("总额为").append(model.getAmount()).append("元,随机分配;最高").append(pri[1]).append("元/个"); }else{ str.append("发放固定金额,红包为").append(model.getRandomAmountAverage()).append(",总额为").append(model.getAmount()); } model.setTypeDesc(str.toString()); } } priceList.add(model); } } Map map = new HashMap<>(); map.put("data",priceList); map.put("pageNumber",ret.getPageNumber()); map.put("pageSize",ret.getPageSize()); map.put("totalPage",ret.getTotalPage()); map.put("count",ret.getTotalRow()); //queryListAfter(priceList); return map; } public void batchDelXzxUserRedpaperRule(List ids){ try { xzxUserRedpaperRuleDao.batchDelXzxUserRedpaperRuleByIds(ids); } catch (Exception e) { throw new PlatformException("批量删除XzxUserRedpaperRule失败", e); } } public void deleteByRuleId(Integer ruleId){ xzxUserRedpaperRuleDao.deleteByRuleId(ruleId); } public Map queryRebateList(XzxPlatformCapitalInfoModel model){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); model.setPartnerIds(partnerIds); Map map = new HashMap<>(); int p = model.getPage(); p = (p - 1) * model.getLimit(); model.setPage(p); String mobilePhone = model.getMobilePhone(); if(!StringUtils.isEmpty(model.getMobilePhone())){ model.setMobilePhone(mobilePhone); model.setNickName(new String(Base64.encodeBase64(mobilePhone.getBytes()))); } List list = xzxUserRedpaperRuleDao.queryRebateList(model); for (XzxPlatformCapitalInfoModel info:list) { if(info.getUserId()!=null&&!"".equals(info.getUserId())){ //转昵称 String nickName = info.getNickName(); if(nickName!=null&&!"".equals(nickName)){ try { nickName =new String(base64.decode(nickName), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } info.setNickName(nickName); //查询用户此单之前的累计重量 String afterWeight = "0" ; String userId = info.getUserId(); String completeTime = info.getCreateTime(); List orderIds = xzxUserRedpaperRuleDao.queryUserOrderIds(completeTime,userId); if(orderIds!=null&&orderIds.size()>0){ afterWeight = xzxUserRedpaperRuleDao.queryAfterWeightByOrderIds(orderIds); } info.setAfterWeight(DoubleUtil.roundThree(afterWeight)); info.setDesignatedWeight(DoubleUtil.roundThree(info.getDesignatedWeight())); } } //如果没有用户Id,则不显示返利列表 if(list.size()==0){ list = new ArrayList<>(); } int count = xzxUserRedpaperRuleDao.queryRebateCount(model); String totalAmount =xzxUserRedpaperRuleDao.queryTotalAmountByParam(model); map.put("data",list); map.put("count",count); map.put("code",0); map.put("orderNum",count); if(null!=totalAmount&&!"".equals(totalAmount)){ map.put("totalAmount",DoubleUtil.roundTwo(totalAmount)); }else{ map.put("totalAmount","0"); } return map; } public List queryRedpaperList(String startTime){ return xzxUserRedpaperRuleDao.queryRedpaperList(startTime); } public List queryRedpaperListStartAndEnd(String startTime,String endTime){ return xzxUserRedpaperRuleDao.queryRedpaperListStartAndEnd(startTime,endTime); } public List queryShareListByTime(String startTime,String endTime){ return xzxUserRedpaperRuleDao.queryShareListByTime(startTime,endTime); } public List queryCommListByTime(String startTime,String endTime,String id){ return xzxUserRedpaperRuleDao.queryCommListByTime(startTime,endTime,id); } public Map queryAccountList(CommissionModel model){ Map map = new HashMap<>(); int p = model.getPage(); p = (p - 1) * model.getLimit(); model.setPage(p); String partnerName = model.getPartnerName(); if(!StringUtils.isEmpty(partnerName)){ model.setPartnerName(partnerName); model.setMobile(partnerName); } int count = 0; String c = xzxUserRedpaperRuleDao.queryAccountListCount(model); List list = xzxUserRedpaperRuleDao.queryAccountList(model); if(null!=c&&!"".equals(c)){ count = Integer.parseInt(c); } //已提佣次数 map.put("commissionNum",count); //总提佣金额 String totalMoney =xzxUserRedpaperRuleDao.queryTotalCommissionMoney(model); if(null!=totalMoney&&!"".equals(totalMoney)){ map.put("totalMoney",DoubleUtil.roundTwo(totalMoney)); }else{ map.put("totalMoney","0.00"); } map.put("code",0); map.put("data",list); map.put("count",count); return map; } public List queryRebateRuleList(XzxUserRebateRuleModel model){ return xzxUserRedpaperRuleDao.queryRebateRuleList(model); } public List queryCommissioList(){ return xzxUserRedpaperRuleDao.queryCommissioList(); } public List queryWeightRuleList(XzxUserRebateRuleModel model){ return xzxUserRedpaperRuleDao.queryWeightRuleList(model); } public List queryRoyalRuleList(String partnerId,String packageId){ return xzxUserRedpaperRuleDao.queryRoyalRuleList(partnerId,packageId); } }