Преглед изворни кода

政策模块+dev环境调试

huangxuechao пре 3 година
родитељ
комит
cbb55afdb2
23 измењених фајлова са 354 додато и 137 уклоњено
  1. 94 59
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/controller/CwjsPolicyInfoController.java
  2. 61 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/CwjsCompanyApprovalUser.java
  3. 8 2
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/CwjsPolicyInfo.java
  4. 19 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsCompanyApprovalUserMapper.java
  5. 1 1
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsCompanySubjectMapper.java
  6. 10 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsCompanyApprovalUserMapper.xml
  7. 3 1
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsCompanySubjectMapper.xml
  8. 5 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsPolicyInfoMapper.xml
  9. 14 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/ICwjsCompanyApprovalUserService.java
  10. 19 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/impl/CwjsCompanyApprovalUserServiceImpl.java
  11. 1 1
      jeecg-boot-finance/src/main/resources/application.yml
  12. 2 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouUnitLevelOperationRecordMapper.java
  13. 7 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouUnitLevelOperationRecordMapper.xml
  14. 0 1
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyService.java
  15. 20 46
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java
  16. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java
  17. 55 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  18. 14 14
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  19. 2 2
      jeecg-cloud-module/jeecg-cloud-gateway/pom.xml
  20. 11 2
      jeecg-cloud-module/jeecg-cloud-gateway/src/main/resources/application-dev.yml
  21. 2 2
      jeecg-cloud-module/jeecg-cloud-nacos/pom.xml
  22. 3 3
      jeecg-cloud-module/jeecg-cloud-nacos/src/main/resources/application-dev.yml
  23. 2 2
      jeecg-cloud-module/jeecg-cloud-system-start/pom.xml

+ 94 - 59
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/controller/CwjsPolicyInfoController.java

@@ -10,27 +10,27 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.com.ctop.common.module.entity.UserCompany;
-import cn.com.ctop.common.module.mapper.SysUserMapper;
+import cn.com.ctop.common.module.mapper.MailLogMapper;
 import cn.com.ctop.common.module.service.IUserCompanyService;
+import cn.com.ctop.common.module.utils.CorpWexinUtils;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.entity.SysUser;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.ctop.finance.policy.entity.CwjsPolicyApprovalLog;
-import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
-import org.jeecg.ctop.finance.policy.entity.CwjsPolicyProduct;
-import org.jeecg.ctop.finance.policy.service.ICwjsPolicyApprovalLogService;
-import org.jeecg.ctop.finance.policy.service.ICwjsPolicyInfoService;
+import org.jeecg.ctop.finance.policy.entity.*;
+import org.jeecg.ctop.finance.policy.mapper.CwjsCompanyApprovalUserMapper;
+import org.jeecg.ctop.finance.policy.mapper.CwjsCompanySubjectMapper;
+import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyApprovalLogMapper;
+import org.jeecg.ctop.finance.policy.service.*;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 
-import org.jeecg.ctop.finance.policy.service.ICwjsPolicyProductService;
 import org.jeecg.ctop.finance.policy.utils.Check;
 import org.jeecg.modules.system.service.ISysRoleService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -55,7 +55,7 @@ import io.swagger.annotations.ApiOperation;
  * @version V1.0
  */
 @Slf4j
-@Api(tags="政策信息表")
+@Api(tags="政策模块")
 @RestController
 @RequestMapping("/finance/cwjsPolicyInfo")
 public class CwjsPolicyInfoController {
@@ -69,9 +69,19 @@ public class CwjsPolicyInfoController {
 	 IUserCompanyService userCompanyService;
 	 @Autowired
 	 ICwjsPolicyApprovalLogService policyApprovalLogService;
-
+	 @Autowired
+	 CwjsCompanyApprovalUserMapper companyApprovalUserMapper;
+	 @Resource
+	 CwjsCompanySubjectMapper companySubjectMapper;
+	 @Autowired
+	 ICwjsCompanySubjectService companySubjectService;
+	 @Resource
+	 CwjsPolicyApprovalLogMapper policyApprovalLogMapper;
 	 @Resource
-	 private SysUserMapper userMapper;
+	 CorpWexinUtils corpWexinUtils;
+	 @Resource
+	 MailLogMapper mailLogMapper;
+
 	 @GetMapping(value = "/queryApprovalRejectReason")
 	 public Result<CwjsPolicyApprovalLog> queryApprovalRejectReason(@RequestParam(name="id",required=true) Integer id){
 		 CwjsPolicyApprovalLog policyApprovalLog = policyApprovalLogService.getOneByPolicyId(id);
@@ -88,22 +98,24 @@ public class CwjsPolicyInfoController {
 	 							@RequestParam(name="type",required=true) Integer type,
 								@RequestParam(name="approvalContent",required=false) String approvalContent){
 		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-		String roleCode = roleService.getRoleCodeByUserId(user.getId());
 		CwjsPolicyInfo cwjsPolicyInfoEntity = cwjsPolicyInfoService.getById(id);
 		 if(cwjsPolicyInfoEntity==null) {
 			 return Result.error("未找到对应实体");
 		 }
-	 	if(type == 1){	//审核提交
-			if(roleCode.equals("saleDirector")){//角色是销售总监的话,状态直接是审核中
+		 String companyId = companySubjectService.getById(cwjsPolicyInfoEntity.getCompanySubjectId()).getCompanyId();
+		 CwjsCompanyApprovalUser cwjsCompanyApprovalUser = companyApprovalUserMapper.queryByCompanyIdAndUserId(companyId, user.getId());
+
+		 if(type == 1){	//审核提交	等于新增的时候
+			if(!Check.isNull(cwjsCompanyApprovalUser)){//当前登录的用户所提交的政策是审核链里的人的提交的  直接状态到2给终审的人员
 				cwjsPolicyInfoEntity.setApprovedStatus(2);
 			}else{	//除了销售总监提交的申请都是-待审核
 				cwjsPolicyInfoEntity.setApprovedStatus(1);
 			}
 		}
-	 	if(type == 2){	//审核通过
-			if(roleCode.equals("saleDirector")){//角色是销售总监的话,状态直接是审核中
+	 	if(type == 2){	//审核通过  是不是终审,不是就给当前的下一个人发企业微信
+			if(!Check.isNull(cwjsCompanyApprovalUser) && !"final".equalsIgnoreCase(cwjsCompanyApprovalUser.getLevel())){//不是终审的
 				cwjsPolicyInfoEntity.setApprovedStatus(2);
-			}else{	//除了总监,别人点的包括管理员点通过审核按钮,是直接通过了
+			}else{	//是终审的就搞成3
 				cwjsPolicyInfoEntity.setApprovedStatus(3);
 			}
 			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
@@ -111,7 +123,7 @@ public class CwjsPolicyInfoController {
 			policyApprovalLog.setApprovalStatus(0);
 			policyApprovalLogService.save(policyApprovalLog);
 		}
-	 	if(type == 3){	//审核拒绝
+	 	if(type == 3){	//审核拒绝	给申请人发企业微信
 			cwjsPolicyInfoEntity.setApprovedStatus(4);
 			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
 			policyApprovalLog.setCreateUserId(user.getId());
@@ -139,52 +151,69 @@ public class CwjsPolicyInfoController {
 									  HttpServletRequest req) {
 
 		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-//		LoginUser user = new LoginUser();
-//		user.setId("b161b7d9793942f980dbfe8c931cd1b0");	//a9ab18bf186c463dba715f39f9fa9267
-		String roleCode = roleService.getRoleCodeByUserId(user.getId());
-		if (roleCode.equals("admin")&&Check.isNull(cwjsPolicyInfo.getCreateUserId())) {	//1.当前登录用户为管理员角色,并且没有传递销售id来精确查询。  则不触发sql的过滤条件
-			cwjsPolicyInfo.setCreateUserIds(null);
-		}else if(roleCode.equals("admin")&&!Check.isNull(cwjsPolicyInfo.getCreateUserId())){//2.当前登录用户为管理员角色,并且传递了销售的id,则需要触发
-			List<String> userIds = new ArrayList<>();
-			userIds.add(cwjsPolicyInfo.getCreateUserId());
-			cwjsPolicyInfo.setCreateUserIds(userIds);
-		}else if(roleCode.equals("saleDirector")){	//3.如果是销售总监	查询自己和手下创建的所有政策
-			List<SysUser> allList = userMapper.selectAllUser();
-			List<SysUser>  mulUserList = treeCategoryData(allList, user.getId());
-			List<String> userIds = new ArrayList<>();
-			mulUserList.forEach(sysUser -> userIds.add(sysUser.getId()));
-			userIds.add(user.getId());
-			cwjsPolicyInfo.setCreateUserIds(userIds);
-			if(!Check.isNull(cwjsPolicyInfo.getCreateUserId())&& userIds.contains(cwjsPolicyInfo.getCreateUserId())){//总监精确查询了某个销售id的政策,那么先看这个销售是不是他的手下
-				List<String> newUserIds = new ArrayList<>();
-				newUserIds.add(cwjsPolicyInfo.getCreateUserId());
-				cwjsPolicyInfo.setCreateUserIds(newUserIds);
-			}
-		}else {	//其他的人,谁登录看谁自己的
-			List<String> userIds = new ArrayList<>();
-			userIds.add(user.getId());
-			cwjsPolicyInfo.setCreateUserIds(userIds);
+		List<CwjsCompanyApprovalUser> cwjsCompanyApprovalUserList = companyApprovalUserMapper.queryByUserId(user.getId());
+		if(Check.isNull(cwjsCompanyApprovalUserList)){
+			cwjsPolicyInfo.setCreateUserId(user.getId());
+		}else{
+			List<Integer> companySubjectIds = new ArrayList<>();
+			cwjsCompanyApprovalUserList.forEach(cwjsCompanyApprovalUser -> {
+				List<CwjsCompanySubject> cwjsCompanySubjects = companySubjectMapper.queryByCompanyId(cwjsCompanyApprovalUser.getCompanyId());
+				cwjsCompanySubjects.forEach(cwjsCompanySubject -> companySubjectIds.add(cwjsCompanySubject.getId()));
+			});
+			cwjsPolicyInfo.setCompanySubjectIds(companySubjectIds);
 		}
+//		String roleCode = roleService.getRoleCodeByUserId(user.getId());
+//		if (roleCode.equals("admin")&&Check.isNull(cwjsPolicyInfo.getCreateUserId())) {	//1.当前登录用户为管理员角色,并且没有传递销售id来精确查询。  则不触发sql的过滤条件
+//			cwjsPolicyInfo.setCreateUserIds(null);
+//		}else if(roleCode.equals("admin")&&!Check.isNull(cwjsPolicyInfo.getCreateUserId())){//2.当前登录用户为管理员角色,并且传递了销售的id,则需要触发
+//			List<String> userIds = new ArrayList<>();
+//			userIds.add(cwjsPolicyInfo.getCreateUserId());
+//			cwjsPolicyInfo.setCreateUserIds(userIds);
+//		}else if(roleCode.equals("saleDirector")){	//3.如果是销售总监	查询自己和手下创建的所有政策
+//			List<SysUser> allList = userMapper.selectAllUser();
+//			List<SysUser>  mulUserList = treeCategoryData(allList, user.getId());
+//			List<String> userIds = new ArrayList<>();
+//			mulUserList.forEach(sysUser -> userIds.add(sysUser.getId()));
+//			userIds.add(user.getId());
+//			cwjsPolicyInfo.setCreateUserIds(userIds);
+//			if(!Check.isNull(cwjsPolicyInfo.getCreateUserId())&& userIds.contains(cwjsPolicyInfo.getCreateUserId())){//总监精确查询了某个销售id的政策,那么先看这个销售是不是他的手下
+//				List<String> newUserIds = new ArrayList<>();
+//				newUserIds.add(cwjsPolicyInfo.getCreateUserId());
+//				cwjsPolicyInfo.setCreateUserIds(newUserIds);
+//			}
+//		}else {	//其他的人,谁登录看谁自己的
+//			List<String> userIds = new ArrayList<>();
+//			userIds.add(user.getId());
+//			cwjsPolicyInfo.setCreateUserIds(userIds);
+//		}
 
 		PageHelper.startPage(pageNo,pageSize);
 		List<CwjsPolicyInfo> cwjsPolicyInfos = cwjsPolicyInfoService.queryPageList(cwjsPolicyInfo);
+		cwjsPolicyInfos.forEach(cwjsPolicy ->{
+			CwjsPolicyApprovalLog log = policyApprovalLogMapper.getOneByPolicyId(cwjsPolicy.getId());	//添加日志记录最新的第一条
+			if(!Check.isNull(log)){
+				cwjsPolicy.setApprovalContent(log.getApprovalContent());
+			}
+			if(Check.isNull(cwjsCompanyApprovalUserList)){	//普通销售
+				if(cwjsPolicy.getApprovedStatus() == 4){
+					cwjsPolicy.setOperation("编辑|提交审核");
+				}else{
+					cwjsPolicy.setOperation("查看");
+				}
+			}else{	//审核人员
+				if(cwjsPolicy.getApprovedStatus() == 1 || cwjsPolicy.getApprovedStatus() == 2){
+					cwjsPolicy.setOperation("查看|审核通过|审核拒绝");
+				}else{
+					cwjsPolicy.setOperation("查看");
+				}
+			}
+
+		});
 		PageInfo<CwjsPolicyInfo> pageInfo = new PageInfo<>(cwjsPolicyInfos);
 		return Result.successMsg("成功。",pageInfo);
 	}
 
 
-	 public List<SysUser> treeCategoryData(List<SysUser> allList, String leaderId) {
-		 List<SysUser> mapList = new ArrayList<>();
-		 for (SysUser vo : allList) {
-			 if (leaderId.equals(vo.getLeaderId())){
-				 mapList.add(vo);
-				 mapList.addAll(treeCategoryData(allList,vo.getId()));
-			 }
-		 }
-		 return mapList;
-
-	 }
-
 	 /**
 	  * 分页列表查询
 	  * @param userId
@@ -193,11 +222,15 @@ public class CwjsPolicyInfoController {
 
 	 @ApiOperation(value="政策信息表-分页列表查询", notes="政策信息表-分页列表查询")
 	 @GetMapping(value = "/queryAeraByUserId")
-	 public Result<UserCompany> queryAeraByUserId(@RequestParam(name="userId",required=true) String userId) {
-		 Result<UserCompany> result = new Result<>();
+	 public Result<JSONObject> queryAeraByUserId(@RequestParam(name="userId",required=true) String userId) {
+		 Result<JSONObject> result = new Result<>();
 		 UserCompany userCompany = userCompanyService.getByUserId(userId);
+		 List<CwjsCompanySubject> companySubjects = companySubjectMapper.queryByCompanyId(userCompany.getCompanyId());
+		 JSONObject jsonObject = new JSONObject();
+		 jsonObject.put("UserCompany",userCompany);
+		 jsonObject.put("companySubjects",companySubjects);
 		 result.setSuccess(true);
-		 result.setResult(userCompany);
+		 result.setResult(jsonObject);
 		 return result;
 	 }
 
@@ -211,6 +244,7 @@ public class CwjsPolicyInfoController {
 	public Result<CwjsPolicyInfo> add(@RequestBody CwjsPolicyInfo cwjsPolicyInfo) {
 		Result<CwjsPolicyInfo> result = new Result<>();
 		try {
+			cwjsPolicyInfo.setApprovedStatus(1);
 			cwjsPolicyInfoService.save(cwjsPolicyInfo);
 			JSONArray products = cwjsPolicyInfo.getPolicyProductName();
 			List<CwjsPolicyProduct> policyProductList = new ArrayList<>();
@@ -223,6 +257,7 @@ public class CwjsPolicyInfoController {
 				policyProductList.add(policyProduct);
 			});
 			cwjsPolicyProductService.saveBatch(policyProductList);
+			//先给first发企业微信
 			result.success("添加成功!");
 		} catch (Exception e) {
 			log.error(e.getMessage(),e);
@@ -237,7 +272,7 @@ public class CwjsPolicyInfoController {
 	 * @return
 	 */
 	@ApiOperation(value="政策信息表-编辑", notes="政策信息表-编辑")
-	@PutMapping(value = "/edit")
+	@PostMapping(value = "/edit")
 	public Result<CwjsPolicyInfo> edit(@RequestBody CwjsPolicyInfo cwjsPolicyInfo) {
 		Result<CwjsPolicyInfo> result = new Result<CwjsPolicyInfo>();
 		CwjsPolicyInfo cwjsPolicyInfoEntity = cwjsPolicyInfoService.getById(cwjsPolicyInfo.getId());

+ 61 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/CwjsCompanyApprovalUser.java

@@ -0,0 +1,61 @@
+package org.jeecg.ctop.finance.policy.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 政策审核人员配置
+ * @author jeecg-boot
+ * @date   2021-08-09
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_cwjs_company_approval_user")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_cwjs_company_approval_user对象", description="政策审核人员配置")
+public class CwjsCompanyApprovalUser {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+	private Integer id;
+	/**公司id*/
+	@Excel(name = "公司id", width = 15)
+    @ApiModelProperty(value = "公司id")
+	private String companyId;
+	/**审核人员id*/
+	@Excel(name = "审核人员id", width = 15)
+    @ApiModelProperty(value = "审核人员id")
+	private String approvalUserId;
+	/**审核人员姓名*/
+	@Excel(name = "审核人员姓名", width = 15)
+    @ApiModelProperty(value = "审核人员姓名")
+	private String approvalUserName;
+	/**是否是终审(0:不是 ,1:是)*/
+	@Excel(name = "是否是终审(0:不是 ,1:是)", width = 15)
+    @ApiModelProperty(value = "是否是终审(0:不是 ,1:是)")
+	private String level;
+	/**删除状态(0,正常,1已删除)*/
+	@Excel(name = "删除状态(0,正常,1已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0,正常,1已删除)")
+	private Integer delFlag;
+	/**创建时间*/
+    @ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**更新时间*/
+    @ApiModelProperty(value = "更新时间")
+	private Date updateTime;
+}

+ 8 - 2
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/CwjsPolicyInfo.java

@@ -104,8 +104,8 @@ public class CwjsPolicyInfo {
     @ApiModelProperty(value = "政策结束时间")
 	private String policyEndDate;
 	/**备注:如果没人填的话记录被拒次数*/
-	@Excel(name = "备注:如果没人填的话记录被拒次数", width = 15)
-    @ApiModelProperty(value = "备注:如果没人填的话记录被拒次数")
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
 	private Object remarks;
 	/**删除状态(0,正常,1已删除)*/
 	@Excel(name = "删除状态(0,正常,1已删除)", width = 15)
@@ -134,4 +134,10 @@ public class CwjsPolicyInfo {
 	private Date endTime;
 	@TableField(exist = false)
 	private List<String> createUserIds;
+	@TableField(exist = false)
+	private List<Integer> companySubjectIds;
+	@TableField(exist = false)
+	private String approvalContent;
+	@TableField(exist = false)
+	private String operation;
 }

+ 19 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsCompanyApprovalUserMapper.java

@@ -0,0 +1,19 @@
+package org.jeecg.ctop.finance.policy.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.ctop.finance.policy.entity.CwjsCompanyApprovalUser;
+
+/**
+ * 政策审核人员配置
+ * @author jeecg-boot
+ * 2021-08-09
+ * @version V1.0
+ */
+public interface CwjsCompanyApprovalUserMapper extends BaseMapper<CwjsCompanyApprovalUser> {
+    CwjsCompanyApprovalUser queryByCompanyIdAndUserId(String companyId, String userId);
+
+    List<CwjsCompanyApprovalUser> queryByUserId(String userId);
+}

+ 1 - 1
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsCompanySubjectMapper.java

@@ -13,5 +13,5 @@ import org.jeecg.ctop.finance.policy.entity.CwjsCompanySubject;
  * @version V1.0
  */
 public interface CwjsCompanySubjectMapper extends BaseMapper<CwjsCompanySubject> {
-
+    List<CwjsCompanySubject> queryByCompanyId(String companyId);
 }

+ 10 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsCompanyApprovalUserMapper.xml

@@ -0,0 +1,10 @@
+<?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="org.jeecg.ctop.finance.policy.mapper.CwjsCompanyApprovalUserMapper">
+    <select id="queryByCompanyIdAndUserId" resultType="org.jeecg.ctop.finance.policy.entity.CwjsCompanyApprovalUser">
+        select * from ctop_cwjs_company_approval_user where company_id = #{companyId} and create_user_id = #{userId}  limit 1
+    </select>
+    <select id="queryByUserId" resultType="org.jeecg.ctop.finance.policy.entity.CwjsCompanyApprovalUser">
+        select * from ctop_cwjs_company_approval_user where create_user_id = #{userId}
+    </select>
+</mapper>

+ 3 - 1
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsCompanySubjectMapper.xml

@@ -1,5 +1,7 @@
 <?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="org.jeecg.ctop.finance.policy.mapper.CwjsCompanySubjectMapper">
-
+    <select id="queryByCompanyId" resultType="org.jeecg.ctop.finance.policy.entity.CwjsCompanySubject">
+        select * from ctop_cwjs_company_subject where company_id = {companyId}
+    </select>
 </mapper>

+ 5 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsPolicyInfoMapper.xml

@@ -10,10 +10,15 @@
         <if test="dianPayCompanyName != null and dianPayCompanyName != ''">and t2.dian_pay_company_name like concat(concat('%',#{dianPayCompanyName}),'%')</if>
         <if test="mediaType != null and mediaType != ''">and t2.media_type = #{mediaType}</if>
         <if test="rebateType != null and rebateType != ''">and t2.rebate_type = #{rebateType}</if>
+        <if test="createUserId != null and createUserId != ''">and t2.create_user_id = #{createUserId}</if>
         <if test="createUserIds != null and createUserIds != ''">and  t2.create_user_id in
          <foreach item="item" index="index" collection="createUserIds" open="(" separator="," close=")">
             #{item}
         </foreach></if>
+        <if test="companySubjectIds != null and companySubjectIds != ''">and  t2.company_subject_id in
+            <foreach item="item" index="index" collection="companySubjectIds" open="(" separator="," close=")">
+                #{item}
+            </foreach></if>
         <if test="promotionType != null and promotionType != ''">and t2.promotion_type = #{promotionType}</if>
         <if test="approvedStatus != null and approvedStatus != ''">and t2.approved_status = #{approvedStatus}</if>
         <if test="startTime != null and startTime != ''">and t2.create_time &gt;= #{startTime}</if>

+ 14 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/ICwjsCompanyApprovalUserService.java

@@ -0,0 +1,14 @@
+package org.jeecg.ctop.finance.policy.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.ctop.finance.policy.entity.CwjsCompanyApprovalUser;
+
+/**
+ * 政策审核人员配置
+ * @author jeecg-boot
+ * 2021-08-09
+ * @version V1.0
+ */
+public interface ICwjsCompanyApprovalUserService extends IService<CwjsCompanyApprovalUser> {
+
+}

+ 19 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/impl/CwjsCompanyApprovalUserServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.ctop.finance.policy.service.impl;
+
+import org.jeecg.ctop.finance.policy.entity.CwjsCompanyApprovalUser;
+import org.jeecg.ctop.finance.policy.mapper.CwjsCompanyApprovalUserMapper;
+import org.jeecg.ctop.finance.policy.service.ICwjsCompanyApprovalUserService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 政策审核人员配置
+ * @author jeecg-boot
+ * 2021-08-09
+ * @version V1.0
+ */
+@Service
+public class CwjsCompanyApprovalUserServiceImpl extends ServiceImpl<CwjsCompanyApprovalUserMapper, CwjsCompanyApprovalUser> implements ICwjsCompanyApprovalUserService {
+
+}

+ 1 - 1
jeecg-boot-finance/src/main/resources/application.yml

@@ -1,7 +1,7 @@
 server:
   port: 7005
   servlet:
-    context-path: /
+    context-path: /jeecg-boot-finance
 
 spring:
   application:

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouUnitLevelOperationRecordMapper.java

@@ -14,4 +14,6 @@ import java.util.List;
  */
 public interface AiKuaishouUnitLevelOperationRecordMapper extends BaseMapper<AiKuaishouUnitLevelOperationRecord> {
     List<AiKuaishouUnitLevelOperationRecord> selectAllByAccountId(Date startDate, Date endDate);
+    List<Long> selectAllAccountIds(Date startDate, Date endDate);
+    List<AiKuaishouUnitLevelOperationRecord> selectAllByAccountIdAndDate(Long accountId, Date startDate, Date endDate);
 }

+ 7 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouUnitLevelOperationRecordMapper.xml

@@ -4,4 +4,11 @@
     <select id="selectAllByAccountId" resultType="cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord">
         select distinct account_id,campaign_id,unit_id from ctop_ai_kuaishou_unit_level_operation_record where unit_id is not null and  create_time &gt;= #{startDate} and create_time &lt;= #{endDate} and account_id in (select account_id from ctop_user_allocation where project_id = 458) group by account_id,campaign_id,unit_id
     </select>
+    <select id="selectAllByAccountIdAndDate" resultType="cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord">
+        select distinct account_id,campaign_id,unit_id from ctop_ai_kuaishou_unit_level_operation_record where unit_id is not null and unit_type = 4 and create_time &gt;= #{startDate} and create_time &lt;= #{endDate} and account_id = #{accountId} group by account_id,campaign_id,unit_id
+    </select>
+
+    <select id="selectAllAccountIds" resultType="long">
+        select distinct account_id from ctop_ai_kuaishou_unit_level_operation_record where unit_id is not null and  create_time &gt;= #{startDate} and create_time &lt;= #{endDate} and account_id in (select account_id from ctop_user_allocation where project_id = 458) group by account_id
+    </select>
 </mapper>

+ 0 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyService.java

@@ -24,5 +24,4 @@ public interface IKuaishouAudienceReportDailyService extends IService<KuaishouAu
 
     void crowdAnalysisReport2(CtopOauthToken token, String date, String type, Long plan, Long unit, Integer page, Integer pageSize);
 
-    void crowdAnalysisReport3(CtopOauthToken token, String date, JSONArray reportDims, Long plan, Long unit, Integer page, Integer pageSize);
 }

+ 20 - 46
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java

@@ -7,7 +7,9 @@ import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord;
 import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouCreativeLevelOperationRecordMapper;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouUnitLevelOperationRecordMapper;
 import cn.com.ctop.kuaishou.modules.report.entity.*;
 import cn.com.ctop.kuaishou.modules.report.mapper.*;
 import cn.com.ctop.kuaishou.modules.report.service.*;
@@ -15,15 +17,17 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * 人群分析报表
@@ -332,9 +336,14 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
                 } else {
                     if(code == 500000 || code == 400001){
                         System.out.print("》》5秒后重试,accountId:"+unit+",日期:"+date+"《《 "+resultJson);
-                        try{Thread.sleep(5000);} catch (InterruptedException e){};
+                        try{Thread.sleep(5000);} catch (InterruptedException e){}
                         crowdAnalysisReport2(token,date, type, plan, unit, page, pageSize);
-                    }else {
+                    }else if(code == 402000 || code == 402004){
+                        System.out.print("》》10分钟后重试,accountId:"+unit+",日期:"+date+"《《 "+resultJson);
+                        try{Thread.sleep(5000 * 60 * 2);} catch (InterruptedException e){}
+                        token = tokenService.getTokenByAccountId(token.getAccountId());
+                        crowdAnalysisReport2(token,date, type, plan, unit, page, pageSize);
+                    }else{
                         log.error("查询人群分析报表数据返回信息错误:unit:{},日期{},返回信息:{}", unit,date, resultJson);
                     }
                 }
@@ -344,46 +353,11 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
         }
     }
 
+    @Autowired
+    IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
+
+
+
 
-    @Override
-    public void crowdAnalysisReport3(CtopOauthToken token, String date, JSONArray reportDims , Long plan, Long unit, Integer page, Integer pageSize) {
-        long start = System.currentTimeMillis();
-        try {
-            String url = urlPath + KuaishouInterfaceConstant.AUDIENCE_REPORT;
-//            JSONArray reportDims = new JSONArray();
-//            reportDims.add(type);
-            Map<String, String> headers = new HashMap<>();
-            headers.put("Access-Token", token.getAccessToken());
-            headers.put("Content-Type", "application/json");
-            JSONObject requestJson = new JSONObject();
-            requestJson.put("advertiser_id", token.getAccountId());
-            requestJson.put("start_date", date);
-            requestJson.put("end_date", date);
-            requestJson.put("report_dims", reportDims);
-            requestJson.put("page", page);
-            requestJson.put("page_size", pageSize);
-            if (!Check.isNull(plan)) {
-                JSONArray plans = new JSONArray();
-                plans.add(plan);
-                requestJson.put("campaign_ids", plans);
-            }
-            if (!Check.isNull(unit)) {
-                requestJson.put("unit_ids", unit);
-            }
-            String result = HttpUtils.kuaiShouhttpPostRequest(url, requestJson.toJSONString(), headers);
-            JSONObject resultJson = JSONObject.parseObject(result);
-            if (!Check.isNull(resultJson)) {
-                Integer code = resultJson.getInteger("code");
-                if (code == 0) {
-                    JSONObject datas = resultJson.getJSONObject("data");
-                    Integer totalCount = datas.getInteger("total_count");
-                    JSONArray details = datas.getJSONArray("details");
-                    System.out.println("datas"+datas.toJSONString());
-                }
-            }
-        } catch (Exception e) {
-            log.error("插入人群分析报表数据异常,数据维度:{}", reportDims.toJSONString(), e);
-        }
-    }
 }
 

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java

@@ -18,7 +18,7 @@ import java.util.ArrayList;
  * @author: zzy
  * @date: 2021-07-12
  */
-@Configuration
+//@Configuration
 public class ElasticsearchConfig {
     @Value("${elasticsearch.address}")
     private String address;

+ 55 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java

@@ -11,6 +11,8 @@ import cn.com.ctop.crawler.modules.core.entity.CrawlerDouyinMusicTask;
 import cn.com.ctop.crawler.modules.core.service.CrawlerDouyinMusicTaskService;
 import cn.com.ctop.crawler.modules.douyin.service.DouyinMusicService;
 import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAdvertiserStrategy;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouUnitLevelOperationRecordMapper;
 import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouAdvertiserStrategyService;
 import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouCreateCreativeService;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
@@ -42,6 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.InputStream;
@@ -49,6 +52,7 @@ import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -141,6 +145,24 @@ public class TestController {
     @Value("${xxl-job.requestUrl}")
     private String jobUrl;
 
+//
+//    @PostConstruct
+//    public void haha(){
+//        System.out.println("开始拉取数据~~~~~");
+//        CtopOauthToken token = tokenService.getTokenByAccountId(9556431l);
+//        JSONArray types = new JSONArray();
+//        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布, clientId: 系统分布 businessInterestTags: 商业兴趣分布
+//
+//        types.add("province");
+//        types.add("city");
+//        types.add("gender");
+//        types.add("ageSegment");
+//        types.add("businessInterestTags");
+//        types.add("clientId");
+//        kuaishouAudienceReportDailyService.crowdAnalysisReport3(token, "2021-05-01", types, 50293820l, 216264247l, 1, 2000);
+//        System.out.println("开始拉取完毕~~~~~");
+//    }
+
 
     @GetMapping(value = "/getProgramCreative")
     public void getProgramCreative() {
@@ -1502,6 +1524,39 @@ public class TestController {
         return Result.ok("success");
     }
 
+    static CountDownLatch countDownLatch = null;
+    @Resource
+    AiKuaishouUnitLevelOperationRecordMapper kuaishouUnitLevelOperationRecordMapper;
+    @PostMapping(value = "/getAudienceDataNew")
+    public void getAudienceData() throws Exception {
+        int page = 1;
+        int pageSize = 2000;
+        String mulDate = DateUtils.formatDate(DateUtils.addDay(DateUtils.getNowDate(), -1), "yyyy-MM-dd");
+        List<CtopOauthToken> tokens = tokenService.getByProjectId(458l);    //淘特项目
+        for (CtopOauthToken token : tokens) {
+            Date startDate = DateUtils.getNowDate();
+            Date enDate = DateUtils.addDay(startDate, 30);
+            List<AiKuaishouUnitLevelOperationRecord> planIdsAndUnitIds = kuaishouUnitLevelOperationRecordMapper.selectAllByAccountIdAndDate(token.getAccountId(), startDate, enDate);
+            countDownLatch = new CountDownLatch(planIdsAndUnitIds.size());
+            planIdsAndUnitIds.forEach(planIdAndUnitId -> executorService.submit(() -> {
+                try {
+                    // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "province", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "city", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "gender", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "clientId", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "ageSegment", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, mulDate, "businessInterestTags", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+
+                } catch (Exception e) {
+                } finally {
+                    countDownLatch.countDown();
+                }
+            }));
+            countDownLatch.await();
+        }
+    }
+
     @Autowired
     private IAiKuaishouAdvertiserStrategyService strategyService;
     @Autowired

+ 14 - 14
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -26,20 +26,20 @@ public class SampleTest {
     private ICtopOauthTokenService tokenService;
     @Autowired
     IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
-    @Test
-    public void haha(){
-        CtopOauthToken token = tokenService.getTokenByAccountId(9556431l);
-        JSONArray types = new JSONArray();
-        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布, clientId: 系统分布 businessInterestTags: 商业兴趣分布
-
-        types.add("province");
-        types.add("city");
-        types.add("gender");
-        types.add("ageSegment");
-        types.add("businessInterestTags");
-        types.add("clientId");
-        kuaishouAudienceReportDailyService.crowdAnalysisReport3(token, "2021-05-01", types, 50293820l, 216264247l, 1, 2000);
-    }
+//    @Test
+//    public void haha(){
+//        CtopOauthToken token = tokenService.getTokenByAccountId(9556431l);
+//        JSONArray types = new JSONArray();
+//        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布, clientId: 系统分布 businessInterestTags: 商业兴趣分布
+//
+//        types.add("province");
+//        types.add("city");
+//        types.add("gender");
+//        types.add("ageSegment");
+//        types.add("businessInterestTags");
+//        types.add("clientId");
+//        kuaishouAudienceReportDailyService.crowdAnalysisReport3(token, "2021-05-01", types, 50293820l, 216264247l, 1, 2000);
+//    }
 //
 //	@Resource
 //	private JeecgDemoMapper jeecgDemoMapper;

+ 2 - 2
jeecg-cloud-module/jeecg-cloud-gateway/pom.xml

@@ -80,9 +80,9 @@
     <profiles>
         <!-- 开发 -->
         <profile>
-            <id>dev-bak</id>
+            <id>dev</id>
             <properties>
-                <activatedProperties>dev-bak</activatedProperties>
+                <activatedProperties>dev</activatedProperties>
             </properties>
         </profile>
         <!-- 测试 -->

+ 11 - 2
jeecg-cloud-module/jeecg-cloud-gateway/src/main/resources/application-dev.yml

@@ -5,7 +5,7 @@ spring:
         password:
         username:
       discovery:
-        server-addr: 172.30.0.7:8848
+        server-addr: 127.0.0.1:8848
         service: jeecg-gateway
         namespace:
     gateway:
@@ -21,14 +21,23 @@ spring:
             allowedHeaders: "*"
       routes:
       - id: jeecg-system
-#        uri: http://localhost:7001
         uri: lb://jeecg-system
         predicates:
           - Path=/jeecg-boot/**
+        filters:
+          - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
+      - id: finance
+        uri: lb://jeecg-boot-finance
+        predicates:
+          - Path=/jeecg-boot-finance/**
+        filters:
+          - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
       - id: jeecg-bytedance-ad
         uri: lb://jeecg-bytedance-ad
         predicates:
           - Path=/bytedance/ad/**
+        filters:
+          - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
 # hystrix 信号量隔离,3秒后自动超时
 hystrix:
   enabled: true

+ 2 - 2
jeecg-cloud-module/jeecg-cloud-nacos/pom.xml

@@ -74,9 +74,9 @@
     <profiles>
         <!-- 开发 -->
         <profile>
-            <id>dev-bak</id>
+            <id>dev</id>
             <properties>
-                <activatedProperties>dev-bak</activatedProperties>
+                <activatedProperties>dev</activatedProperties>
             </properties>
         </profile>
         <!-- 测试 -->

+ 3 - 3
jeecg-cloud-module/jeecg-cloud-nacos/src/main/resources/application-dev.yml

@@ -4,11 +4,11 @@ spring:
 db:
   num: 1
   password:
-    '0': hcst@2021
+    '0': hcst@2020
   url:
-    '0': jdbc:mysql://139.186.27.96:4000/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+    '0': jdbc:mysql://139.186.165.84:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
   user:
-    '0': data
+    '0': hcst
 management:
   metrics:
     export:

+ 2 - 2
jeecg-cloud-module/jeecg-cloud-system-start/pom.xml

@@ -96,9 +96,9 @@
     <profiles>
         <!-- 开发 -->
         <profile>
-            <id>dev-bak</id>
+            <id>dev</id>
             <properties>
-                <activatedProperties>dev-bak</activatedProperties>
+                <activatedProperties>dev</activatedProperties>
             </properties>
         </profile>
         <!-- 测试 -->