Commit 4bd99ea5 by Water Wang

Merge branch 'dev_20200420_life' into dev

parents 0af1b5f6 f6ed3749
......@@ -19,8 +19,8 @@ public class PractitionerController {
/**
* 线下经纪人排行榜
* @param requestVO
* @return
* @param requestVO
* @return Object
*/
@RequestMapping("/practitionerRank")
public Object practitionerRank(@RequestBody PractitionerRankRequestVO requestVO){
......
......@@ -7,14 +7,17 @@ import com.yd.api.practitioner.vo.rank.PractitionerInfoForAchievement;
import com.yd.api.result.CommonResult;
import com.yd.dal.entity.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerRankInfo;
import com.yd.dal.service.practitioner.PractitionerServiceDAL;
import com.yd.dal.service.meta.MdCodeDALService;
import com.yd.dal.service.practitioner.PractitionerDALService;
import com.yd.util.config.ZHBErrorConfig;
import com.yd.util.deshandler.DESTypeHandler;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
......@@ -22,7 +25,9 @@ import java.util.List;
public class PractitionerServiceImpl implements com.yd.api.practitioner.service.PractitionerService {
@Autowired
private PractitionerServiceDAL practitionerServiceDAL;
private PractitionerDALService practitionerDALService;
@Autowired
private MdCodeDALService mdCodeDALService;
@Override
public PractitionerRankResponseVO practitionerRank(PractitionerRankRequestVO requestVO) {
PractitionerRankResponseVO responseVO = new PractitionerRankResponseVO();
......@@ -57,9 +62,17 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
private List<PractitionerRankInfo> getPractitionerRankInfo(Integer time, Integer platform) {
List<PractitionerRankInfo> rankInfoList;
if(platform == 1){
rankInfoList = practitionerServiceDAL.getPractitionerRankInfoForOnline(time);
Long practitionerTypeId = 28L;
rankInfoList = practitionerDALService.getPractitionerRankInfoForOnline(time,practitionerTypeId);
//特殊人员处理
String mobileSpecialStr = mdCodeDALService.findCodeByType("special_practitioner_mobile");
if(!Strings.isNullOrEmpty(mobileSpecialStr)){
List<String> mobileSpecials = Arrays.asList(mobileSpecialStr.split(","));
List<PractitionerRankInfo> rankInfoListSpecials = practitionerDALService.getPractitionerRankInfoForSpecials(mobileSpecials,time);
rankInfoList.addAll(rankInfoListSpecials);
}
}else{
rankInfoList = practitionerServiceDAL.getPractitionerRankInfoForOffline(time);
rankInfoList = practitionerDALService.getPractitionerRankInfoForOffline(time);
}
return rankInfoList;
}
......@@ -67,7 +80,9 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
private PractitionerBasicInfo getPractitionerBasicInfo(String mobileNo, Integer platform) {
PractitionerBasicInfo practitionerBasicInfo;
if(platform == 1){
practitionerBasicInfo = practitionerServiceDAL.getPractitionerBasicInfoForOnline(mobileNo);
DESTypeHandler jpaCryptoConverter = new DESTypeHandler();
mobileNo = jpaCryptoConverter.encode(mobileNo);
practitionerBasicInfo = practitionerDALService.getPractitionerBasicInfoForOnline(mobileNo);
if(practitionerBasicInfo != null){
Long practitionerId = practitionerBasicInfo.getPractitionerIdForOnline();
if(practitionerId != null){
......@@ -75,16 +90,16 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
}
}
}else{
practitionerBasicInfo = practitionerServiceDAL.getPractitionerBasicInfoForOffline(mobileNo);
practitionerBasicInfo = practitionerDALService.getPractitionerBasicInfoForOffline(mobileNo);
}
return practitionerBasicInfo;
}
private void getPractitionerRankResult(PractitionerRankResponseVO responseVO, List<PractitionerRankInfo> rankInfoList, Integer type, String practitionerId) {
PractitionerInfoForAchievement practitionerInfo = new PractitionerInfoForAchievement();
PractitionerInfoForAchievement practitionerInfo = new PractitionerInfoForAchievement(0D,0D,0);
List<AclCustomerFortuneStatistics> rankList = new ArrayList<>();
if(!rankInfoList.isEmpty()){
//1-保费,2-佣金,3-件数
//排序---1-保费,2-佣金,3-件数
if(2 == type){
rankInfoList.sort(Comparator.comparingDouble(PractitionerRankInfo::getFyc).reversed());
}else if(3 == type){
......@@ -94,42 +109,31 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
}
AclCustomerFortuneStatistics fortuneStatistics;
int rank = 1;
boolean rank10 ,getSelf = false;
Long practitionerIdForOnLine;
String practitionerIdItem;
for(PractitionerRankInfo practitionerItem : rankInfoList){
Long practitionerIdForOnLine = practitionerItem.getPractitionerIdForOnLine();
//更新对象里面的内容,将PractitionerIdForOnLine里的信息赋值到PractitionerId
practitionerIdForOnLine = practitionerItem.getPractitionerIdForOnLine();
if(practitionerIdForOnLine != null){
practitionerItem.setPractitionerId(practitionerIdForOnLine.toString());
}
rank10 = (rank > 10);
if(!rank10){
practitionerIdItem = practitionerItem.getPractitionerId();
if(rank <= 10){//排名
fortuneStatistics = new AclCustomerFortuneStatistics();
BeanUtils.copyProperties(practitionerItem,fortuneStatistics);
fortuneStatistics.setSubordinateSystemName(practitionerItem.getSpcDivName());
fortuneStatistics.setRank(rank);
rankList.add(fortuneStatistics);
}
if(!getSelf){
String practitionerIdItem = practitionerItem.getPractitionerId();
if(practitionerId.equals(practitionerIdItem)){
BeanUtils.copyProperties(practitionerItem,practitionerInfo);
practitionerInfo.setRank(rank);
getSelf = true;
if(practitionerId.equals(practitionerIdItem)){//赋值
BeanUtils.copyProperties(practitionerItem,practitionerInfo);
practitionerInfo.setRank(rank);
if(rank > 10){
break;
}
}
if(rank10 && getSelf){
break;
}
rank ++;
}
if(!getSelf){
practitionerInfo.setCount(0);
practitionerInfo.setFyc(0D);
practitionerInfo.setFyp(0D);
}
}else{
practitionerInfo.setCount(0);
practitionerInfo.setFyc(0D);
practitionerInfo.setFyp(0D);
}
responseVO.setPractitionerInfo(practitionerInfo);
responseVO.setRank(rankList);
......
......@@ -51,4 +51,11 @@ public class PractitionerInfoForAchievement implements Serializable {
private static final long serialVersionUID = 1L;
public PractitionerInfoForAchievement(Double fyp, Double fyc, Integer count) {
this.fyp = fyp;
this.fyc = fyc;
this.count = count;
}
public PractitionerInfoForAchievement() {
}
}
package com.yd.api.security;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.yd.api.result.JsonResult;
import com.yd.api.security.vo.DESCommonVO;
import com.yd.util.deshandler.DESTypeHandler;
@RestController
@RequestMapping(value="/data/security")
public class DataSecurityController {
@RequestMapping("/dataencrypt")
public Object encrypt(@RequestBody DESCommonVO requestVO) throws Exception{
JsonResult result = new JsonResult();
String resultString = "";
try {
DESTypeHandler jpaCryptoConverter = new DESTypeHandler();
resultString = jpaCryptoConverter.encode((requestVO.getContent()));
requestVO.setEncrypted(resultString);
} catch (Exception e) {
e.printStackTrace();
}
result.setData(requestVO);
return result;
}
@RequestMapping("/datadecrypt")
public Object Decrypt(@RequestBody DESCommonVO requestVO) throws Exception{
JsonResult result = new JsonResult();
String content = "";
try {
DESTypeHandler jpaCryptoConverter = new DESTypeHandler();
content = jpaCryptoConverter.decode(requestVO.getEncrypted());
requestVO.setContent(content);
} catch (Exception e) {
e.printStackTrace();
}
result.setData(requestVO);
return result;
}
}
package com.yd.api.security.vo;
import java.util.List;
public class ConvertTable {
private String tableName;//表名
private List<String> fields;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public List<String> getFields() {
return fields;
}
public void setFields(List<String> fields) {
this.fields = fields;
}
}
package com.yd.api.security.vo;
import java.util.List;
import com.yd.api.result.CommonResult;
import com.yd.util.page.PaginationInfo;
public class ConvertTableList {
private List<ConvertTable> convertTables;
private CommonResult commonResult;
private String dbName;//数据库名
private String operate;//1.加密(DataEncrypt)2.解密(DataDecrypt)
public String getOperate() {
return operate;
}
public void setOperate(String operate) {
this.operate = operate;
}
private PaginationInfo paginationInfo;
public PaginationInfo getPaginationInfo() {
return paginationInfo;
}
public void setPaginationInfo(PaginationInfo paginationInfo) {
this.paginationInfo = paginationInfo;
}
public List<ConvertTable> getConvertTables() {
return convertTables;
}
public void setConvertTables(List<ConvertTable> convertTables) {
this.convertTables = convertTables;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
public String getDbName() {
return dbName;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
}
package com.yd.api.security.vo;
import java.io.Serializable;
public class DESCommonVO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String content;
private String encrypted;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getEncrypted() {
return encrypted;
}
public void setEncrypted(String encrypt) {
encrypted = encrypt;
}
}
package com.yd.api.security.vo;
public class DesDecryptRequestVO {
}
package com.yd.api.security.vo;
import com.yd.api.result.CommonResult;
public class DesDecryptResponseVO {
private String desDecryptResult;
private CommonResult commonResult;
public String getDesDecryptResult() {
return desDecryptResult;
}
public void setDesDecryptResult(String desDecryptResult) {
this.desDecryptResult = desDecryptResult;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.security.vo;
public class DesEncryptRequestVO {
private String encryptString;
private String type;
public String getEncryptString() {
return encryptString;
}
public void setEncryptString(String encryptString) {
this.encryptString = encryptString;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package com.yd.api.security.vo;
import com.yd.api.result.CommonResult;
public class DesEncryptResponseVO {
private String encryptResult;
private CommonResult commonResult;
public String getEncryptResult() {
return encryptResult;
}
public void setEncryptResult(String encryptResult) {
this.encryptResult = encryptResult;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.dal.entity.meta;
import java.util.Date;
public class MdCode {
private Long id;
private String codeType;
private String codeCode;
private String codeName;
private Integer isActive;
private String remark;
private Date createAt;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCodeType() {
return codeType;
}
public void setCodeType(String codeType) {
this.codeType = codeType;
}
public String getCodeCode() {
return codeCode;
}
public void setCodeCode(String codeCode) {
this.codeCode = codeCode;
}
public String getCodeName() {
return codeName;
}
public void setCodeName(String codeName) {
this.codeName = codeName;
}
public Integer getIsActive() {
return isActive;
}
public void setIsActive(Integer isActive) {
this.isActive = isActive;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getCreateAt() {
return createAt;
}
public void setCreateAt(Date createAt) {
this.createAt = createAt;
}
}
package com.yd.dal.entity.practitioner;
public class PractitionerRankInfo {
private Long customerId;
private Long practitionerIdForOnLine;
private String practitionerId;
private String name;
......@@ -11,6 +12,14 @@ public class PractitionerRankInfo {
private Double fyp;
private Double fyc;
public Long getCustomerId() {
return customerId;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
public Long getPractitionerIdForOnLine() {
return practitionerIdForOnLine;
}
......
package com.yd.dal.mapper.meta;
import com.yd.dal.entity.meta.MdCode;
import java.util.List;
public interface MdCodeMapper {
List<MdCode> findByCodeType(String codeType);
String findCodeByType(String codeType);
}
......@@ -13,5 +13,7 @@ public interface PractitionerMapper {
PractitionerBasicInfo getPractitionerInfoByMobileNoForOnline(String mobileNo);
List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time);
List<PractitionerRankInfo> getPractitionerRankInfoForOnline(@Param("time")Integer time,@Param("practitionerTypeId")Long practitionerTypeId);
List<PractitionerRankInfo> getPractitionerRankInfoForSpecials(@Param("mobileSpecials") List<String> mobileSpecials, @Param("time")Integer time);
}
package com.yd.dal.service.meta;
import com.yd.dal.entity.meta.MdCode;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("mdCodeDALService")
public interface MdCodeDALService {
/**
* 通过codeType获取配置信息
* @param codeType
* @return
*/
List<MdCode> findByCodeType(String codeType);
/**
* 通过type获取code并且 is_active = 1
* @param codeType
* @return
*/
String findCodeByType(String codeType);
}
package com.yd.dal.service.meta.impl;
import com.google.common.base.Strings;
import com.yd.dal.entity.meta.MdCode;
import com.yd.dal.mapper.meta.MdCodeMapper;
import com.yd.dal.service.meta.MdCodeDALService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service("mdCodeDALService")
public class MdCodeDALServiceImpl implements MdCodeDALService {
@Resource
private MdCodeMapper mdCodeMapper;
@Override
public List<MdCode> findByCodeType(String codeType) {
List<MdCode> codeList = new ArrayList<>();
if(!Strings.isNullOrEmpty(codeType)){
codeList = mdCodeMapper.findByCodeType(codeType);
}
return codeList;
}
@Override
public String findCodeByType(String codeType) {
if(!Strings.isNullOrEmpty(codeType)){
return mdCodeMapper.findCodeByType(codeType);
}
return null;
}
}
......@@ -5,7 +5,7 @@ import com.yd.dal.entity.practitioner.PractitionerRankInfo;
import java.util.List;
public interface PractitionerServiceDAL {
public interface PractitionerDALService {
/**
* 线下--通过手机号码获取经纪人的基础信息
* @param mobileNo
......@@ -31,5 +31,12 @@ public interface PractitionerServiceDAL {
* @param time 1-month,2-year
* @return
*/
List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time);
List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time,Long practitionerTypeId);
/**
* 线上--按照时间进行查询特殊人员的排名统计信息
* @param mobileSpecials
* @return
*/
List<PractitionerRankInfo> getPractitionerRankInfoForSpecials(List<String> mobileSpecials,Integer time);
}
......@@ -5,7 +5,7 @@ import com.yd.dal.entity.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerRankInfo;
import com.yd.dal.mapper.practitioner.PractitionerMapper;
import com.yd.dal.service.customer.CustomerDAImpl;
import com.yd.dal.service.practitioner.PractitionerServiceDAL;
import com.yd.dal.service.practitioner.PractitionerDALService;
import com.yd.util.intercept.annotation.TargetDataSource;
import com.yd.util.intercept.commons.DataSourceKey;
import org.apache.log4j.Logger;
......@@ -15,7 +15,7 @@ import javax.annotation.Resource;
import java.util.List;
@Service("practitionerServiceDAL")
public class PractitionerServiceImplDAL implements PractitionerServiceDAL {
public class PractitionerDALServiceImpl implements PractitionerDALService {
private static final Logger LOG = Logger.getLogger(CustomerDAImpl.class);
@Resource
private PractitionerMapper practitionerMapper;
......@@ -47,7 +47,12 @@ public class PractitionerServiceImplDAL implements PractitionerServiceDAL {
}
@Override
public List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time) {
return practitionerMapper.getPractitionerRankInfoForOnline(time);
public List<PractitionerRankInfo> getPractitionerRankInfoForOnline(Integer time,Long practitionerTypeId) {
return practitionerMapper.getPractitionerRankInfoForOnline(time,practitionerTypeId);
}
@Override
public List<PractitionerRankInfo> getPractitionerRankInfoForSpecials(List<String> mobileSpecials,Integer time) {
return practitionerMapper.getPractitionerRankInfoForSpecials(mobileSpecials,time);
}
}
......@@ -32,30 +32,19 @@ public class DESTypeHandler extends BaseTypeHandler<Object> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
throws SQLException {
sensitiveenabled = Boolean.valueOf(properties.get(secret_property_enabled_key).toString());
if (sensitiveenabled==false)
{
return;
}
if (parameter == null)
{
return;
}
sensitivekey = (String)properties.get(secret_property_key);
DESUtils des;
String result = null;
try {
des = new DESUtils(sensitivekey, "utf-8");
if (parameter != null)
{
result = des.encode((String)parameter);
}
ps.setString(i, result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (parameter != null)
{
result = encode((String)parameter);
}
ps.setString(i, result);
}
@Override
......@@ -82,14 +71,45 @@ public class DESTypeHandler extends BaseTypeHandler<Object> {
String result = decode(columnValue);
return result;
}
private String decode(String columnValue) {
/**
* 解密
* @param context
* @return
*/
public String encode(String context){
sensitiveenabled = Boolean.valueOf(properties.get(secret_property_enabled_key).toString());
if (sensitiveenabled==false)
{
return null;
}
sensitivekey = (String)properties.get(secret_property_key);
DESUtils des;
String result = null;
try {
des = new DESUtils(sensitivekey, "utf-8");
if (context != null)
{
result = des.encode((String)context);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 解密
* @return
*/
public String decode(String encrypted) {
sensitiveenabled = Boolean.valueOf(properties.get(secret_property_enabled_key).toString());
if (sensitiveenabled==false)
{
return columnValue;
return encrypted;
}
if (columnValue == null)
if (encrypted == null)
{
return null;
}
......@@ -98,14 +118,15 @@ public class DESTypeHandler extends BaseTypeHandler<Object> {
String result = null;
try {
des = new DESUtils(sensitivekey, "utf-8");
if (columnValue != null)
if (encrypted != null)
{
result = des.decode(columnValue);
result = des.decode(encrypted);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yd.dal.mapper.meta.MdCodeMapper">
<resultMap id="md_code_result_map" type="com.yd.dal.entity.meta.MdCode">
<result column="id" property="id"/>
<result column="codeType" property="codeType"/>
<result column="codeCode" property="codeCode" />
<result column="codeName" property="codeName"/>
<result column="isActive" property="isActive"/>
<result column="remark" property="remark"/>
<result column="createAt" property="createAt"/>
</resultMap>
<select id="findByCodeType" resultMap="md_code_result_map">
SELECT
t.id as id,
t.code_type as codeType,
t.code_code as codeCode,
t.code_name as codeName,
t.is_active as isActive,
t.remark as remark,
t.created_at as creteAt
FROM ag_md_code t
where t.is_active = 1 and t.code_type = #{codeType}
</select>
<select id="findCodeByType" resultType="java.lang.String">
SELECT
t.code_code as codeCode
FROM ag_md_code t
where t.is_active = 1 and t.code_type = #{codeType}
</select>
</mapper>
\ No newline at end of file
......@@ -40,6 +40,7 @@
<resultMap id="practitioner_rank_map" type="com.yd.dal.entity.practitioner.PractitionerRankInfo">
<result column="customerId" property="customerId"/>
<result column="practitionerIdForOnLine" property="practitionerIdForOnLine"/>
<result column="practitionerId" property="practitionerId"/>
<result column="name" property="name"/>
......@@ -75,33 +76,65 @@
</choose>
group by p.SAL_MST_ID;
</select>
<select id="getPractitionerRankInfoForOnline" resultMap="practitioner_rank_map" resultType="java.lang.Integer">
<select id="getPractitionerRankInfoForOnline" resultMap="practitioner_rank_map">
SELECT
p.id as practitionerIdForOnLine ,
p.name as name ,-- 姓名
<!-- o.drop_option_code as titleCode,&#45;&#45; 职称code-->
<!-- o.drop_option_name as titleName,&#45;&#45; 职称名称-->
ss.name as spcDivName,-- 体系id
count(f.id) as count,-- 保单id
sum(f.order_price) as fyp,-- 保费
sum(f.referral_amount) as fyc -- 应发佣金
p.customer_id as customerId,
p.id as practitionerIdForOnLine ,
p.name as name ,-- 姓名
ss.name as spcDivName,-- 体系id
count(f.id) as count,-- 保单id
sum(f.order_price) as fyp,-- 保费
sum(f.referral_amount) as fyc -- 应发佣金
FROM ag_acl_customer_fortune f INNER JOIN ag_po_order o ON f.order_id = o.id
left JOIN ag_acl_practitioner p ON f.customer_id = p.customer_id
<!-- left join ag_acl_practitioner_setting s on p.id = s.practitioner_id-->
<!-- left join ag_md_drop_options o on s.practitioner_level = o.id-->
inner join ag_acl_practitioner_subordinate_system ss on p.subordinate_system_id = ss.id
inner JOIN ag_acl_practitioner p ON f.customer_id = p.customer_id
left join ag_acl_practitioner_setting s on p.id = s.practitioner_id
left join ag_acl_practitioner_subordinate_system ss on p.subordinate_system_id = ss.id
WHERE o.status = 3 and o.order_price > 0
<choose>
<when test="time == 1">
and DATE_FORMAT(f.order_date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
</when>
<otherwise>
and YEAR(f.order_date) = YEAR(now())
</otherwise>
</choose>
<if test="practitionerTypeId != null">
and s.practitioner_type_id = #{practitionerTypeId}
</if>
<choose>
<when test="time == 1">
and DATE_FORMAT(f.order_date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
</when>
<otherwise>
and YEAR(f.order_date) = YEAR(now())
</otherwise>
</choose>
group by p.id;
</select>
<select id="getPractitionerRankInfoForSpecials" resultMap="practitioner_rank_map" resultType="java.util.List">
SELECT
p.customer_id as customerId,
p.id as practitionerIdForOnLine ,
p.name as name ,-- 姓名
ss.name as spcDivName,-- 体系id
count(f.id) as count,-- 保单id
sum(f.order_price) as fyp,-- 保费
sum(f.referral_amount) as fyc -- 应发佣金
FROM ag_acl_customer_fortune f INNER JOIN ag_po_order o ON f.order_id = o.id
inner JOIN ag_acl_practitioner p ON f.customer_id = p.customer_id
left join ag_acl_customer c on p.customer_id = c.id
left join ag_acl_practitioner_subordinate_system ss on p.subordinate_system_id = ss.id
WHERE o.status = 3 and o.order_price > 0
and c.login in
<foreach collection="mobileSpecials" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<choose>
<when test="time == 1">
and DATE_FORMAT(f.order_date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
</when>
<otherwise>
and YEAR(f.order_date) = YEAR(now())
</otherwise>
</choose>
group by p.id;
</select>
</mapper>
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