加上售中下单逻辑,修改账号渠道,进粉统计的渠道和下单时保持一致
This commit is contained in:
@ -39,4 +39,7 @@ public class SysImportFanWxAccount extends BaseEntity
|
||||
//导粉日期
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date importFanDate;
|
||||
|
||||
//售前
|
||||
private Long preSaleId;
|
||||
}
|
@ -84,6 +84,17 @@ public class SysOrder extends BaseEntity {
|
||||
@Excel(name = "售前")
|
||||
private String preSale;
|
||||
|
||||
/**
|
||||
* 售前推送人(售中一开单才存在)
|
||||
*/
|
||||
//@Excel(name = "售前推送人")
|
||||
private Long pushPreSaleId;
|
||||
|
||||
/**
|
||||
* 售前推送人(售中一开单才存在)
|
||||
*/
|
||||
private String pushPreSale;
|
||||
|
||||
/** 售中ID */
|
||||
private Long onSaleId;
|
||||
|
||||
|
@ -45,6 +45,12 @@ public class SysWxSaleAccount extends BaseEntity
|
||||
|
||||
private Integer useCount;
|
||||
|
||||
//进粉渠道
|
||||
private Integer channel;
|
||||
|
||||
//销售ID
|
||||
private Long saleId;
|
||||
|
||||
//销售昵称
|
||||
private String saleName;
|
||||
}
|
@ -76,5 +76,5 @@ public interface SysWxSaleAccountMapper
|
||||
* 获取可接粉的微信号以及分配的销售昵称
|
||||
* @return
|
||||
*/
|
||||
List<SysWxSaleAccount> getWxAccountAndSale();
|
||||
List<SysWxSaleAccount> getWxAccountAndSale(SysWxSaleAccount sysWxSaleAccount);
|
||||
}
|
@ -77,5 +77,5 @@ public interface ISysWxSaleAccountService
|
||||
* 获取可接粉的微信号以及分配的销售昵称
|
||||
* @return
|
||||
*/
|
||||
List<SysWxSaleAccount> getWxAccountAndSale();
|
||||
List<SysWxSaleAccount> getWxAccountAndSale(SysWxSaleAccount sysWxSaleAccount);
|
||||
}
|
@ -105,7 +105,7 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
//需要自动创建售后二开提成单
|
||||
if(row > 0 && sysOrder.getSecondAfterSaleFlag() != null && sysOrder.getSecondAfterSaleFlag().intValue() == 1){
|
||||
autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
row = autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
}
|
||||
}else{
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
@ -143,7 +143,7 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
//二开,是否需要自动创建售后二开提成单
|
||||
if(row > 0 && "1".equals(sysOrder.getOrderCountType()) && sysOrder.getSecondAfterSaleFlag() != null && sysOrder.getSecondAfterSaleFlag().intValue() == 1){
|
||||
sysOrder.setAmount(amount);
|
||||
autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
row = autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
}
|
||||
}
|
||||
//体验单
|
||||
@ -155,6 +155,64 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
sysOrder.setNutriAssisId(null);
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
}
|
||||
//售中单
|
||||
else if("3".equals(sysOrder.getOrderType())){
|
||||
sysOrder.setPreSaleId(null);
|
||||
//一开、二开
|
||||
if("0".equals(sysOrder.getOrderCountType()) || "1".equals(sysOrder.getOrderCountType())){
|
||||
sysOrder.setNutritionistId((sysOrder.getNutritionistIdList() != null && sysOrder.getNutritionistIdList().length > 0) ? sysOrder.getNutritionistIdList()[0] : null);
|
||||
sysOrder.setMainOrderId(0L);
|
||||
sysOrder.setAfterSaleCommissOrder(0);
|
||||
if("0".equals(sysOrder.getOrderCountType())){
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
}else{
|
||||
//二开单不存在售前推荐人
|
||||
sysOrder.setPushPreSaleId(null);
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
//需要自动创建售后二开提成单
|
||||
if(row > 0 && sysOrder.getSecondAfterSaleFlag() != null && sysOrder.getSecondAfterSaleFlag().intValue() == 1){
|
||||
row = autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
sysOrder.setAfterSaleCommissOrder(0);
|
||||
String rate = sysOrder.getNutritionistRate();
|
||||
if(StringUtils.isEmpty(rate) || rate.indexOf(",") == -1 || "0,10".equals(rate) || sysOrder.getNutritionistIdList().length != 2){
|
||||
return 0;
|
||||
}
|
||||
String[] rateArray = rate.split(",");
|
||||
if(Integer.parseInt(rateArray[0]) + Integer.parseInt(rateArray[1]) != 10){
|
||||
return 0;
|
||||
}
|
||||
BigDecimal amount = sysOrder.getAmount();
|
||||
//获取主单的数组下标
|
||||
int mainIndex = 0;
|
||||
if(Integer.parseInt(rateArray[1]) > Integer.parseInt(rateArray[0])){
|
||||
mainIndex = 1;
|
||||
}
|
||||
//添加主单
|
||||
sysOrder.setNutritionistId(sysOrder.getNutritionistIdList()[mainIndex]);
|
||||
sysOrder.setAmount(BigDecimal.valueOf(amount.doubleValue()*Integer.parseInt(rateArray[mainIndex])/10));
|
||||
sysOrder.setMainOrderId(0L);
|
||||
//拆分二开单
|
||||
if("3".equals(sysOrder.getOrderCountType())){
|
||||
//二开单不存在售前推荐人
|
||||
sysOrder.setPushPreSaleId(null);
|
||||
}
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
//添加副单
|
||||
sysOrder.setMainOrderId(sysOrder.getOrderId());
|
||||
sysOrder.setOrderId(sysOrder.getOrderId()+1);
|
||||
sysOrder.setNutritionistId(sysOrder.getNutritionistIdList()[1-mainIndex]);
|
||||
sysOrder.setAmount(BigDecimal.valueOf(amount.doubleValue()*Integer.parseInt(rateArray[1-mainIndex])/10));
|
||||
row = sysOrderMapper.insertSysOrder(sysOrder);
|
||||
//拆分二开单
|
||||
if(row > 0 && "3".equals(sysOrder.getOrderCountType()) && sysOrder.getSecondAfterSaleFlag() != null && sysOrder.getSecondAfterSaleFlag().intValue() == 1){
|
||||
sysOrder.setAmount(amount);
|
||||
row = autoCreateSecondAfterSaleOrder(sysOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
return row;
|
||||
}
|
||||
|
||||
@ -166,6 +224,8 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
private int autoCreateSecondAfterSaleOrder(SysOrder sysOrder){
|
||||
if(sysOrder != null){
|
||||
sysOrder.setPreSaleId(sysOrder.getAfterSaleId());
|
||||
sysOrder.setOnSaleId(null);
|
||||
sysOrder.setPushPreSaleId(null);
|
||||
sysOrder.setAfterSaleId(null);
|
||||
sysOrder.setNutritionistId(null);
|
||||
sysOrder.setNutriAssisId(null);
|
||||
@ -173,6 +233,7 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
sysOrder.setPlannerAssisId(null);
|
||||
sysOrder.setOperatorId(null);
|
||||
sysOrder.setOperatorAssisId(null);
|
||||
sysOrder.setMainOrderId(0L);
|
||||
sysOrder.setAfterSaleCommissOrder(1);
|
||||
sysOrder.setOrderId(sysOrder.getOrderId()+1);
|
||||
return sysOrderMapper.insertSysOrder(sysOrder);
|
||||
@ -208,6 +269,9 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
sysOrder.setOperatorId(null);
|
||||
sysOrder.setOperatorAssisId(null);
|
||||
}
|
||||
if("3".equals(sysOrder.getOrderType())){
|
||||
sysOrder.setPreSaleId(null);
|
||||
}
|
||||
if(oldSysOrder.getStartTime() == null){//确保提成计算时间不为空
|
||||
sysOrder.setCommissStartTime(sysOrder.getOrderTime());
|
||||
}
|
||||
@ -313,7 +377,7 @@ public class SysOrderServiceImpl implements ISysOrderService {
|
||||
for (SysOrder sysOrder : orderList) {
|
||||
LocalDate newStartTime = null;
|
||||
//判断是否提成单,拆分单中的副单,体验单,定金单
|
||||
if(sysOrder.getStartTime() == null || sysOrder.getAfterSaleCommissOrder().intValue() == 1 || ("1".equals(sysOrder.getOrderType()) && sysOrder.getMainOrderId().intValue() != 0) ||
|
||||
if(sysOrder.getStartTime() == null || sysOrder.getAfterSaleCommissOrder().intValue() == 1 || sysOrder.getMainOrderId().intValue() != 0 ||
|
||||
"2".equals(sysOrder.getOrderType()) || "1".equals(sysOrder.getOrderMoneyType())){
|
||||
continue;
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
||||
continue;
|
||||
}
|
||||
//判断是否提成单,拆分单中的副单,体验单,定金单
|
||||
if (sysOrder.getAfterSaleCommissOrder().intValue() == 1 || ("1".equals(sysOrder.getOrderType()) && sysOrder.getMainOrderId().intValue() != 0) ||
|
||||
if (sysOrder.getAfterSaleCommissOrder().intValue() == 1 || sysOrder.getMainOrderId().intValue() != 0 ||
|
||||
// "2".equals(sysOrder.getOrderType()) || // 体验单也需要生成计划 2021.05.29
|
||||
"1".equals(sysOrder.getOrderMoneyType()) || sysOrder.getCounted() == 1) {
|
||||
System.out.println("---------------------" + sysOrder.getOrderId() + "不生成食谱------------------------");
|
||||
|
@ -136,7 +136,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService {
|
||||
* @param sysWxSaleAccount
|
||||
* @return
|
||||
*/
|
||||
public List<SysWxSaleAccount> getWxAccountAndSale(){
|
||||
return sysWxSaleAccountMapper.getWxAccountAndSale();
|
||||
public List<SysWxSaleAccount> getWxAccountAndSale(SysWxSaleAccount sysWxSaleAccount){
|
||||
return sysWxSaleAccountMapper.getWxAccountAndSale(sysWxSaleAccount);
|
||||
}
|
||||
}
|
@ -4,9 +4,9 @@ import com.stdiet.custom.domain.SysOrder;
|
||||
|
||||
public class OrderUtils {
|
||||
|
||||
private static final String[] orderTypeArray = {"普通单","比例拆分单","体验单"};
|
||||
private static final String[] orderTypeArray = {"普通单","比例拆分单","体验单","售中单"};
|
||||
|
||||
private static final String[] orderCountTypeArray = {"一开单","二开单"};
|
||||
private static final String[] orderCountTypeArray = {"一开单","二开单","一开单(拆分)","二开单(拆分)"};
|
||||
|
||||
private static final String[] orderMoneyTypeArray = {"全款单","定金单","尾款单"};
|
||||
|
||||
@ -27,7 +27,7 @@ public class OrderUtils {
|
||||
orderTypeName += "/"+orderCountTypeArray[Integer.parseInt(sysOrder.getOrderCountType())];
|
||||
orderTypeName += "/"+orderMoneyTypeArray[Integer.parseInt(sysOrder.getOrderMoneyType())];
|
||||
//判断是不是二开提成单
|
||||
if("1".equals(sysOrder.getOrderCountType()) && sysOrder.getAfterSaleCommissOrder().intValue() == 1){
|
||||
if(sysOrder.getAfterSaleCommissOrder() != null && sysOrder.getAfterSaleCommissOrder().intValue() == 1){
|
||||
orderTypeName += "/提成单";
|
||||
}
|
||||
return orderTypeName;
|
||||
|
@ -41,6 +41,7 @@
|
||||
<result property="serverEndTime" column="server_end_time"/>
|
||||
<result property="becomeFanTime" column="become_fan_time"/>
|
||||
|
||||
<result property="pushPreSaleId" column="push_pre_sale_id" />
|
||||
<result property="onSaleId" column="on_sale_id"/>
|
||||
<result property="orderType" column="order_type"/>
|
||||
<result property="orderCountType" column="order_count_type"/>
|
||||
@ -63,7 +64,7 @@
|
||||
o.serve_time_id, o.pay_type_id, pay.dict_label as pay_type, o.pre_sale_id, o.create_by, o.create_time, o.after_sale_id, o.update_by, o.update_time,
|
||||
o.nutritionist_id, o.remark, o.nutri_assis_id, o.account_id, acc.dict_label as account, o.planner_id, o.planner_assis_id, o.operator_id, o.operator_assis_id,
|
||||
o.recommender, o.order_time,o.give_serve_day,o.conditioning_project_id,cp.dict_label as conditioning_project,o.server_end_time,
|
||||
o.on_sale_id,o.order_type,o.order_count_type,o.order_money_type,o.main_order_id,o.after_sale_commiss_order,o.commiss_start_time, o.counted
|
||||
o.on_sale_id,o.order_type,o.order_count_type,o.order_money_type,o.main_order_id,o.after_sale_commiss_order,o.commiss_start_time, o.counted,o.push_pre_sale_id
|
||||
from sys_order o
|
||||
LEFT JOIN sys_customer sc ON sc.id = o.cus_id
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_pay_type') AS pay ON pay.dict_value = o.pay_type_id
|
||||
@ -227,6 +228,7 @@
|
||||
<if test="operatorId != null">operator_id,</if>
|
||||
<if test="serveTimeId != null">serve_time_id,</if>
|
||||
<if test="recommender != null">recommender,</if>
|
||||
<if test="pushPreSaleId != null">push_pre_sale_id,</if>
|
||||
<if test="amount != null">amount,</if>
|
||||
<if test="orderTime != null">order_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
@ -270,6 +272,7 @@
|
||||
<if test="operatorId != null">#{operatorId},</if>
|
||||
<if test="serveTimeId != null">#{serveTimeId},</if>
|
||||
<if test="recommender != null">#{recommender},</if>
|
||||
<if test="pushPreSaleId != null">#{pushPreSaleId},</if>
|
||||
<if test="amount != null">#{amount},</if>
|
||||
<if test="orderTime != null">#{orderTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
@ -316,6 +319,7 @@
|
||||
<if test="operatorId != null">operator_id = #{operatorId},</if>
|
||||
<if test="serveTimeId != null">serve_time_id = #{serveTimeId},</if>
|
||||
<if test="recommender != null">recommender = #{recommender},</if>
|
||||
<if test="pushPreSaleId != null">push_pre_sale_id = #{pushPreSaleId},</if>
|
||||
<if test="amount != null">amount = #{amount},</if>
|
||||
<if test="orderTime != null">order_time = #{orderTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
@ -387,6 +391,7 @@
|
||||
<result property="serverEndTime" column="server_end_time"/>
|
||||
<result property="becomeFanTime" column="become_fan_time"/>
|
||||
|
||||
<result property="pushPreSaleId" column="push_pre_sale_id" />
|
||||
<result property="onSaleId" column="on_sale_id"/>
|
||||
<result property="orderType" column="order_type"/>
|
||||
<result property="orderCountType" column="order_count_type"/>
|
||||
|
@ -35,7 +35,7 @@
|
||||
FROM sys_wx_distribution AS swd
|
||||
lEFT JOIN sys_wx_sale_account swsa ON swsa.id = swd.wechat_account and swsa.del_flag = 0
|
||||
LEFT JOIN sys_user su ON su.user_id = swd.user_id AND su.del_flag = 0
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'fan_channel') AS acc ON acc.dict_value = swd.account_id
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_account') AS acc ON acc.dict_value = swd.account_id
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'sale_group') AS asg ON asg.dict_value = swd.sale_group_id
|
||||
where swd.del_flag = 0
|
||||
</sql>
|
||||
|
@ -37,7 +37,7 @@
|
||||
left join sys_wx_sale_account swsa on swsa.id = swfs.wx_id and swsa.del_flag = 0
|
||||
left join sys_wx_distribution swd on swd.wechat_account = swfs.wx_id and swd.del_flag = 0
|
||||
left join sys_user su on su.user_id = swd.user_id and su.del_flag = 0
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'fan_channel') AS acc ON acc.dict_value = swd.account_id
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_account') AS acc ON acc.dict_value = swd.account_id
|
||||
LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'sale_group') AS asg ON asg.dict_value = swd.sale_group_id
|
||||
</sql>
|
||||
|
||||
|
@ -145,6 +145,15 @@
|
||||
left join sys_wx_distribution swd on wa.id = swd.wechat_account and swd.del_flag = 0
|
||||
LEFT JOIN sys_user su ON su.user_id = swd.user_id AND su.del_flag = 0
|
||||
where wa.del_flag = 0 and wa.status = 0
|
||||
<if test="saleId != null">
|
||||
and swd.user_id = #{saleId}
|
||||
</if>
|
||||
<if test="wxAccount != null and wxAccount != ''">
|
||||
and wa.wx_account like concat('%',#{wxAccount},'%')
|
||||
</if>
|
||||
<if test="channel != null">
|
||||
and swd.account_id = #{channel}
|
||||
</if>
|
||||
order by su.user_id asc
|
||||
</select>
|
||||
|
||||
|
Reference in New Issue
Block a user