Commit 1e62f8a6 by songyinghui

Merge branch 'feature-content3' into developer

parents 65e023dd 71590e98
package com.gic.haoban.manage.api.dto.statistics.commission;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author MUSI
* @Date 2023/6/9 9:49 AM
* @Description
* @Version
**/
public class ClerkCommissionStaticsDTO implements Serializable {
/**
* 企业id
*/
private String enterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 客户数量
*/
private Integer memberCount;
/**
* 佣金金额
*/
private BigDecimal commissionAmount;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getMemberCount() {
return memberCount;
}
public void setMemberCount(Integer memberCount) {
this.memberCount = memberCount;
}
public BigDecimal getCommissionAmount() {
return commissionAmount;
}
public void setCommissionAmount(BigDecimal commissionAmount) {
this.commissionAmount = commissionAmount;
}
}
......@@ -75,9 +75,9 @@ public enum NoticeMessageTypeEnum {
//
MATERIAL_NEW_NOTIFY(6001, "素材上新通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_new_notify", "/pages/route/index?pageType=", "hbapp_material_center", "materialsNotice", "clerkMaterialsNotice"),
MATERIAL_REPORT_NOTIFY_WEEK(6002, "素材周报通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_week_notify", "/pages/route/index?pageType=", "hbapp_mate_report", "materialWeek", "clerkMaterialsReport"),
POTENTIAL_CUSTOMER_NOTIFY(6003, "销售线索通知", NoticeMessageCategoryTypeEnum.POTENTIAL_CUSTOMER.getType(), "potential_customer_notify", "/pages/route/index?pageType=", "hbapp_sales_clue_center", "salesLeadNotice", "haobanNotice"),
MATERIAL_REPORT_NOTIFY_MONTH(6004, "素材月报通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_month_notify", "/pages/route/index?pageType=", "hbapp_mate_report", "materialMonth", "clerkMaterialsReport"),
POTENTIAL_CUSTOMER_NOTIFY(6003, "销售线索通知", NoticeMessageCategoryTypeEnum.POTENTIAL_CUSTOMER.getType(), "potential_customer_notify", "/pages/route/index?pageType=", "hbapp_sales_clue_center", "salesLeadNotice", "haobanNotice");
CLERK_COMMISSION_NOTIFY(6005, "客户下单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "clerk_commission_notify", "/pages/route/index?pageType=", "hbapp_withdraw_list", "clerkCommissionNotify", "haobanNotice");
/**
......
package com.gic.haoban.manage.api.service.content.task;
import com.gic.api.base.commons.ServiceResponse;
/**
* @Author MUSI
* @Date 2023/6/7 2:15 PM
* @Description
* @Version
* 佣金统计接口
**/
public interface CommissionTaskApiService {
/**
* 处理佣金消息通知
* @param prams
*/
ServiceResponse<Void> handlerCommissionNotify(String prams);
}
package com.gic.haoban.manage.service.pojo.bo.commission;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author MUSI
* @Date 2023/6/7 2:26 PM
* @Description
* @Version
**/
@Data
public class ClerkCommissionStaticsBO implements Serializable {
/**
* 企业id
*/
private String enterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 客户数量
*/
private Integer memberCount;
/**
* 佣金金额
*/
private BigDecimal commissionAmount;
}
package com.gic.haoban.manage.service.service.commission;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.pojo.bo.commission.ClerkCommissionStaticsBO;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.message.NoticeMessageHandler;
import com.gic.message.center.api.subscribe.model.NoticeMessageForm;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* @Author MUSI
* @Date 2023/6/7 2:31 PM
* @Description
* @Version
* 佣金服务内部服务
**/
@Slf4j
@Component
public class CommissionNotifyInnerService {
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private NoticeMessageHandler noticeMessageHandler;
/**
* 处理导购佣金
* @param commissionStaticsBo
*/
public void handlerCommissionNotify(ClerkCommissionStaticsBO commissionStaticsBo) {
log.info("handlerCommissionNotify params:{}", JSONObject.toJSONString(commissionStaticsBo));
String clerkId = commissionStaticsBo.getClerkId();
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getByClerkId(clerkId);
if (staffClerkRelationDTO == null) {
log.info("handlerCommissionNotify 处理导购佣金消息,导购不存在 {}", clerkId);
return;
}
String staffId = staffClerkRelationDTO.getStaffId();
String uniqueKey = UUID.randomUUID().toString().replaceAll("-", "");
Map<String, String> params = new HashMap<>();
params.put("currentTab", "0");
params.put("commissAmount", commissionStaticsBo.getCommissionAmount().toPlainString());
params.put("memberNum", commissionStaticsBo.getMemberCount() + "");
JSONObject innerParams = new JSONObject();
innerParams.put("currentTab", "0");
String pageUrl = NoticeMessageUtil.buildMiniAppUrl(NoticeMessageTypeEnum.CLERK_COMMISSION_NOTIFY, innerParams.toJSONString());
params.put("page", pageUrl);
params.put("pageParams", innerParams.toJSONString());
NoticeMessageForm noticeMessageForm = NoticeMessageForm
.builder()
.businessId(clerkId)
.messageCode(NoticeMessageTypeEnum.CLERK_COMMISSION_NOTIFY.getMessageCode())
.mqRouterCode(NoticeMessageTypeEnum.CLERK_COMMISSION_NOTIFY.getRouterCode())
.enterpriseId(commissionStaticsBo.getEnterpriseId())
.uniqueKey(uniqueKey)
.createTime(new Date())
.userIdList(Collections.singletonList(clerkId))
.variableMap(params)
.build();
noticeMessageForm.setStaffIdList(Collections.singletonList(staffId));
noticeMessageHandler.sendMessage(noticeMessageForm);
}
}
package com.gic.haoban.manage.service.service.out.impl.content.task;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.content.task.CommissionTaskApiService;
import com.gic.haoban.manage.service.pojo.bo.commission.ClerkCommissionStaticsBO;
import com.gic.haoban.manage.service.service.commission.CommissionNotifyInnerService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author MUSI
* @Date 2023/6/7 2:16 PM
* @Description
* @Version
**/
@Component("commissionTaskApiService")
public class CommissionTaskApiServiceImpl implements CommissionTaskApiService {
@Autowired
private CommissionNotifyInnerService commissionNotifyInnerService;
private static final Logger log = LoggerFactory.getLogger(CommissionTaskApiService.class);
/**
* 处理佣金消息通知
*
* @param params
*/
@Override
public ServiceResponse<Void> handlerCommissionNotify(String params) {
if (StringUtils.isBlank(params)) {
log.info("处理导购佣金消息通知, 参数为空 {}", params);
return ServiceResponse.success();
}
ClerkCommissionStaticsBO commissionStaticsBO = JSON.parseObject(params, ClerkCommissionStaticsBO.class);
commissionNotifyInnerService.handlerCommissionNotify(commissionStaticsBO);
return ServiceResponse.success();
}
}
......@@ -226,4 +226,7 @@
<dubbo:reference interface="com.gic.member.api.service.MemberOutApiService" id="memberOutApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.operating.api.service.HaobanWxEnterpriseApiService" id="haobanWxEnterpriseApiService" timeout="10000" retries="0" check="false"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.content.task.CommissionTaskApiService"
ref="commissionTaskApiService" timeout="10000" />
</beans>
\ No newline at end of file
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.content.task.CommissionTaskApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @Author MUSI
* @Date 2023/6/7 4:34 PM
* @Description
* @Version
**/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class CommissionClerkTest {
@Autowired
private CommissionTaskApiService commissionTaskApiService;
@Test
public void clerkCommission() {
ServiceResponse<Void> serviceResponse = commissionTaskApiService.handlerCommissionNotify("");
System.out.println(JSON.toJSONString(serviceResponse));
}
}
......@@ -66,7 +66,7 @@ public class HmLinkTest {
HmBatchModifyQDTO qdto = new HmBatchModifyQDTO();
qdto.setHmIdList(Arrays.asList(517064205447217236L,457922550308036636L));
qdto.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
qdto.setOptStaffId("fefd1c81641711e69d0818c58a146fd2");
//qdto.setOptStaffId("fefd1c81641711e69d0818c58a146fd2");
qdto.setOptName("达摩管理员");
qdto.setOptType(1);
qdto.setClerkIdList(Arrays.asList("4a566818111a45bbae9f962580df82c0"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment