Forráskód Böngészése

Merge branch 'corp_category'

# Conflicts:
#	netflix-dao/src/main/java/com/cyksj/model/entity/CorpMsgBulkTask.java
#	netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpMsgBulkTaskController.java
zoujiajian 2 éve
szülő
commit
2bad05e4f7

+ 1 - 3
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpTagGroupMapper.java

@@ -7,8 +7,6 @@ import com.cyksj.model.views.CorpTagBackView;
 import com.cyksj.model.views.CorpTagGroupView;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.Map;
-
 /*
  *项目名: netflix
  *文件名: CorpTagGroupMapper
@@ -20,7 +18,7 @@ public interface CorpTagGroupMapper extends BaseMapper<CorpTagGroup> {
 
 	Page<CorpTagGroupView> getCorpTagList(@Param("groupName") String groupName, @Param("page") Page<CorpTagGroupView> page);
 
-	Page<CorpTagBackView> getCorpTagBackView(@Param("page") Page<CorpTagBackView> page, @Param("groupIds") String[] groupIds, @Param("sort") String sort, @Param("order") String order, @Param("wxCorpId") Long wxCorpId);
+	Page<CorpTagBackView> getCorpTagBackView(@Param("page") Page<CorpTagBackView> page, @Param("groupName") String groupName, @Param("sort") String sort, @Param("order") String order, @Param("wxCorpId") Long wxCorpId);
 
 	CorpTagBackView fillCorpGroupTagInfo(@Param("groupId") String groupId, @Param("wxCorpId") Long wxCorpI);
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpTagMapper.java

@@ -16,7 +16,7 @@ import java.util.List;
  *创建时间:2022/10/13 18:07
  */
 public interface CorpTagMapper extends BaseMapper<CorpTag> {
-	Page<CorpTagBackView> getCorpTagBackView(@Param("page") Page<CorpTagBackView> page, @Param("tagIds") String[] tagIds, @Param("sort") String sort, @Param("order") String order, @Param("wxCorpId") Long wxCorpId);
+	Page<CorpTagBackView> getCorpTagBackView(@Param("page") Page<CorpTagBackView> page, @Param("tagName") String tagName, @Param("groupIds") String[] groupIds, @Param("sort") String sort, @Param("order") String order, @Param("wxCorpId") Long wxCorpId);
 
 	List<String> selectTagsIdByGroupId(String groupId);
 

+ 12 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpMsgBulkTask.java

@@ -39,6 +39,13 @@ public class CorpMsgBulkTask implements Serializable {
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long category;
 
+	/**
+	 * 分类名
+	 */
+	@TableField(exist = false)
+	@DbIgnore
+	private String categoryName;
+
 	/**
 	 * 企业微信id
 	 */
@@ -57,6 +64,11 @@ public class CorpMsgBulkTask implements Serializable {
 	@DbIgnore
 	private Integer tagSize;
 
+	/**
+	 * 标签组
+	 */
+	private String tagGroups;
+
 	/**
 	 * 群发内容 文本、附件
 	 */

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpTagGroup.java

@@ -21,6 +21,8 @@ public class CorpTagGroup extends BaseEntity implements Serializable {
      */
     private String groupName;
 
+    private String remark;
+
     /**
      * 排序
      */

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CorpActiveCodeUserDayDataView.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CorpActiveCodeUserDayDataView
+ * 创建者: JavaZou
+ * 创建时间:2023/12/14 11:51
+ */
+@Getter
+@Setter
+@SearchBean(tables = "corp_user",
+		where = ":condition:",
+		groupBy = "date_format(created_time,'%Y-%m-%d')")
+public class CorpActiveCodeUserDayDataView {
+
+	@DbField("count(*)")
+	private Integer numOfUser;
+
+	@DbField("date_format(created_time,'%Y-%m-%d')")
+	private String date;
+}

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CorpTagGroupView.java

@@ -29,4 +29,9 @@ public class CorpTagGroupView implements Serializable {
      */
     @JsonProperty("tagList")
     private List<CorpTag> tagList;
+
+    /**
+     * 标签组属性
+     */
+    private String remark;
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementFrontView.java

@@ -71,6 +71,9 @@ public class HomeManagementFrontView {
 	@DbField("g.img")
 	private String goodsImg;
 
+	@DbField("g.match_img")
+	private String matchImg;
+
 	/**
 	 * 类型
 	 */

+ 7 - 3
netflix-dao/src/main/resources/mapper/CorpTagGroupMapper.xml

@@ -35,6 +35,7 @@
                 group_name like concat('%',#{groupName},'%')
             </if>
         </where>
+        order by id desc
     </select>
 
     <select id="getCorpTagBackView" resultType="com.cyksj.model.views.CorpTagBackView">
@@ -43,10 +44,13 @@
         cg.group_name,
         cg.update_time
         from corp_tag_group cg
+        <where>
+            <if test="groupName != null">
+                cg.group_name like '%${groupName}%'
+            </if>
+        </where>
         )s
-        <if test="sort != null">
-            order by ${sort} ${order}
-        </if>
+        order by group_id desc
     </select>
 
     <select id="fillCorpGroupTagInfo" resultType="com.cyksj.model.views.CorpTagBackView">

+ 13 - 4
netflix-dao/src/main/resources/mapper/CorpTagMapper.xml

@@ -20,10 +20,19 @@
         ct.update_time,
         ct.rule_name_list_str
         from `corp_tag` ct
+        <where>
+            <if test="tagName != null">
+                ct.name like '%${tagName}%'
+            </if>
+            <if test="groupIds != null and groupIds.length > 0">
+                and ct.group_id in
+                <foreach collection="groupIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
         ) s
-        <if test="sort != null">
-            order by ${sort} ${order}
-        </if>
+        order by tagId desc
     </select>
 
     <select id="selectTagsIdByGroupId" resultType="java.lang.String">
@@ -42,7 +51,7 @@
         select count(distinct ct.tag_id) as numOfTag,
                count(distinct cg.group_id) as numOfGroup
         from `corp_tag_group` cg
-                 left join corp_tag ct on ct.group_id = ct.group_id
+                 left join corp_tag ct on ct.group_id = cg.group_id
     </select>
 
     <select id="selectCountOfCustomer" resultType="java.lang.Integer">

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/corp/CorpTagService.java

@@ -29,7 +29,7 @@ public interface CorpTagService {
 
 	void saveOrUpdateRule(CorpTagRule rule);
 
-	Page<CorpTagBackView> getCorpTagBackView(Integer start, Integer limit, Integer type, String[] tagIds, String[] groupIds, String sort, String order);
+	Page<CorpTagBackView> getCorpTagBackView(Integer start, Integer limit, Integer type, String name,  String[] groupIds, String sort, String order) throws Exception;
 
 	List<CorpTag> getGroupTagDetail(String groupId);
 

+ 20 - 3
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpEventActionServiceImpl.java

@@ -327,10 +327,27 @@ public class CorpEventActionServiceImpl implements CorpEventActionService {
 	@Override
 	public CorpXmlOutMessage delCorpTag(CorpXmlMessage message, Map<String, Object> context) {
 		if (message.getTagType().equals("tag")) {
-			corpTagMapper.deleteById(message.getId());
+			CorpTag corpTag = corpTagMapper.selectOne(Wrappers.lambdaQuery(CorpTag.class)
+					.eq(CorpTag::getTagId, message.getId()).last("limit 1"));
+			if (corpTag != null) {
+				corpTagMapper.deleteById(corpTag.getId());
+
+				Integer count = corpTagMapper.delete(Wrappers.lambdaQuery(CorpTag.class)
+						.eq(CorpTag::getGroupId, corpTag.getGroupId()));
+				if (count == 0) {
+					corpTagGroupMapper.delete(Wrappers.lambdaQuery(CorpTagGroup.class)
+							.eq(CorpTagGroup::getGroupId, corpTag.getGroupId()));
+				}
+			}
 		} else if (message.getTagType().equals("tag_group")) {
-			corpTagGroupMapper.deleteById(message.getId());
-			corpTagMapper.deleteById(message.getId());
+			CorpTagGroup corpTagGroup = corpTagGroupMapper.selectOne(Wrappers.lambdaQuery(CorpTagGroup.class)
+					.eq(CorpTagGroup::getGroupId, message.getId()).last("limit 1"));
+			if (corpTagGroup != null) {
+				corpTagGroupMapper.deleteById(corpTagGroup.getId());
+
+				corpTagMapper.delete(Wrappers.lambdaQuery(CorpTag.class)
+						.eq(CorpTag::getGroupId, corpTagGroup.getGroupId()));
+			}
 		}
 		return null;
 	}

+ 4 - 1
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpFollowServiceImpl.java

@@ -173,7 +173,10 @@ public class CorpFollowServiceImpl implements CorpFollowService {
 		CorpTag corpTag = corpTagMapper.selectOne(Wrappers.lambdaQuery(CorpTag.class)
 				.eq(CorpTag::getName, corpFollowActiveCode.getMarkTag()).last("limit 1"));
 		if (corpTag != null) {
-			wxCorpOps.delCorpTag(new String[]{corpTag.getTagId()}, null);
+			try {
+				wxCorpOps.delCorpTag(new String[]{corpTag.getTagId()}, null);
+			} catch (Exception e) {
+			}
 			//删除标签
 			corpTagMapper.deleteById(corpTag.getId());
 			//删除标签组

+ 16 - 12
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpTagServiceImpl.java

@@ -112,7 +112,7 @@ public class CorpTagServiceImpl implements CorpTagService {
 					});
 				}
 				CorpTagGroup corpTagGroup = Optional.ofNullable(corpTagGroupMapper.selectOne(Wrappers.lambdaQuery(CorpTagGroup.class)
-						.eq(CorpTagGroup::getGroupId, corp_tagGroup.getGroupId()).last("limit 1")))
+								.eq(CorpTagGroup::getGroupId, corp_tagGroup.getGroupId()).last("limit 1")))
 						.orElseGet(() -> {
 							CorpTagGroup corpTagGroup2 = new CorpTagGroup();
 							corpTagGroup2.setGroupId(corp_tagGroup.getGroupId());
@@ -120,6 +120,7 @@ public class CorpTagServiceImpl implements CorpTagService {
 							corpTagGroup2.setOrdered(corp_tagGroup.getOrder());
 							return corpTagGroup2;
 						});
+				corpTagGroup.setRemark(tagGroup.getRemark());
 				if (corpTagGroup.getId() == null) corpTagGroupMapper.insert(corpTagGroup);
 				corpTagGroupMapper.updateById(corpTagGroup);
 			} catch (DuplicateKeyException e) {
@@ -142,10 +143,10 @@ public class CorpTagServiceImpl implements CorpTagService {
 			params.putOpt("id", tagGroup.getGroupId());
 			params.putOpt("name", tagGroup.getGroupName());
 			wxCorpOps.editCorpTag(params);
-
-			corpTagGroup.setGroupName(tagGroup.getGroupName());
-			corpTagGroupMapper.updateById(corpTagGroup);
 		}
+		corpTagGroup.setGroupName(tagGroup.getGroupName());
+		corpTagGroup.setRemark(tagGroup.getRemark());
+		corpTagGroupMapper.updateById(corpTagGroup);
 
 		List<CorpUserExternalTagGroupInfo.Tag> newTagsList = new ArrayList<>();
 		Map<String, CorpTag> corpTagMap = new ConcurrentHashMap<>();
@@ -260,7 +261,7 @@ public class CorpTagServiceImpl implements CorpTagService {
 			tagGrous.getTagList().forEach(tag -> {
 				if (tag.getType() == 2) {
 					Optional.ofNullable(corpTagRuleRelationMapper.selectList(Wrappers.lambdaQuery(CorpTagRuleRelation.class)
-							.eq(CorpTagRuleRelation::getTagId, tag.getId())))
+									.eq(CorpTagRuleRelation::getTagId, tag.getId())))
 							.ifPresent(rules -> {
 								tag.setRuleRelationList(rules);
 								if (StrUtil.isNotEmpty(tag.getRuleNameListStr())) {
@@ -284,10 +285,10 @@ public class CorpTagServiceImpl implements CorpTagService {
 	}
 
 	@Override
-	public Page<CorpTagBackView> getCorpTagBackView(Integer start, Integer limit, Integer type, String[] tagIds, String[] groupIds, String sort, String order) {
+	public Page<CorpTagBackView> getCorpTagBackView(Integer start, Integer limit, Integer type, String name, String[] groupIds, String sort, String order) throws Exception {
 		Long wxCorpId = 2l;
 		if (type == 1) {
-			Page<CorpTagBackView> corpTagBackViewPage = corpTagMapper.getCorpTagBackView(new Page<>(start, limit), tagIds, sort, order, wxCorpId);
+			Page<CorpTagBackView> corpTagBackViewPage = corpTagMapper.getCorpTagBackView(new Page<>(start, limit), name,groupIds, sort, order, wxCorpId);
 			corpTagBackViewPage.getRecords().forEach(view -> {
 				if (StrUtil.isNotEmpty(view.getRuleNameListStr())) {
 					try {
@@ -299,8 +300,8 @@ public class CorpTagServiceImpl implements CorpTagService {
 			});
 			return corpTagBackViewPage;
 		}
-		Page<CorpTagBackView> corpTagBackView = corpTagGroupMapper.getCorpTagBackView(new Page<>(start, limit), groupIds, sort, order, wxCorpId);
-		corpTagBackView.getRecords().forEach(data->{
+		Page<CorpTagBackView> corpTagBackView = corpTagGroupMapper.getCorpTagBackView(new Page<>(start, limit), name, sort, order, wxCorpId);
+		corpTagBackView.getRecords().forEach(data -> {
 			CorpTagBackView info = corpTagGroupMapper.fillCorpGroupTagInfo(data.getGroupIdStr(), wxCorpId);
 			data.setTagSize(info.getTagSize());
 			data.setNumOfCustomer(info.getNumOfCustomer());
@@ -320,8 +321,8 @@ public class CorpTagServiceImpl implements CorpTagService {
 		Page<CorpUserView> page = corpUserTagMapper.selectCorpUserDetailByCondition(new Page<>(start, limit), groupId, tagId, wxCorpId);
 		page.getRecords().forEach(data -> {
 			Optional.ofNullable(userMapper.selectOne(Wrappers.lambdaQuery(User.class)
-					.eq(User::getUnionid, data.getUnionId())
-					.last("limit 1")))
+							.eq(User::getUnionid, data.getUnionId())
+							.last("limit 1")))
 					.ifPresent(user -> {
 						data.setUserId(user.getId());
 						data.setNickname(user.getNickname());
@@ -374,7 +375,10 @@ public class CorpTagServiceImpl implements CorpTagService {
 		}
 
 		if (tagIds != null || groupIds != null) {
-			wxCorpOps.delCorpTag(tagIds, groupIds);
+			try {
+				wxCorpOps.delCorpTag(tagIds, groupIds);
+			} catch (Exception e) {
+			}
 		}
 		if (StrUtil.isNotBlank(tagId)) {
 			corpTagMapper.delete(Wrappers.lambdaQuery(CorpTag.class).eq(CorpTag::getTagId, tagId));

+ 15 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CmsCorpFollowActiveCodeController.java

@@ -15,6 +15,7 @@ import com.cyksj.model.request.corp.Attachments;
 import com.cyksj.model.request.corp.CorpFollowContact;
 import com.cyksj.model.views.CorpActiveCodeGoodsOrderView;
 import com.cyksj.model.views.CorpActiveCodeOrderView;
+import com.cyksj.model.views.CorpActiveCodeUserDayDataView;
 import com.cyksj.model.views.CorpFollowActiveCodeView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.corp.CorpFollowDynamicConfigService;
@@ -225,4 +226,18 @@ public class CmsCorpFollowActiveCodeController {
 		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult(view);
 	}
+
+	/**
+	 * 活码人数每日添加详情
+	 * @param acId 活码记录id
+	 * @return
+	 */
+	@GetMapping("/get/statistics/user/data/{acId}")
+	public Result<SearchResult<CorpActiveCodeUserDayDataView>> getAcUserDayData(@PathVariable Long acId) {
+		String condition = String.format("ac_id = %s", acId);
+		SearchResult<CorpActiveCodeUserDayDataView> search = beanSearcher.search(CorpActiveCodeUserDayDataView.class, MapUtils.flatBuilder(request.getParameterMap()).put("condition", condition)
+				.orderBy(CorpActiveCodeUserDayDataView::getDate).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }

+ 8 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpMsgBulkTaskController.java

@@ -39,6 +39,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /*
@@ -110,6 +111,7 @@ public class CorpMsgBulkTaskController {
 			try {
 				List<String> tagList = Jsons.parseList(data.getChooseTagStr(), String.class);
 				data.setTagSize(tagList.size());
+
 				if (StringUtils.isNotBlank(data.getCorn())) {
 					String[] s = data.getCorn().split(" ");
 					CornMetaDto cornMetaDto = new CornMetaDto();
@@ -125,6 +127,9 @@ public class CorpMsgBulkTaskController {
 				if (data.getCouponId() != null) {
 					data.setCouponName(couponMapper.getCouponNameById(data.getCouponId()));
 				}
+				if (data.getCategory() != null && data.getCategory() > 0) {
+					Optional.ofNullable(corpMsgBulkTaskCategoryMapper.selectById(data.getCategory())).ifPresent(e -> data.setCategoryName(e.getName()));
+				}
 			} catch (Exception e) {
 
 			}
@@ -266,7 +271,7 @@ public class CorpMsgBulkTaskController {
 	/**
 	 * 编辑分类
 	 */
-	@PostMapping("/category/update")
+	@PutMapping("/category/update")
 	public Result<String> upCategory(@RequestBody @Validated CorpMsgBulkTaskCategory corpMsgBulkTaskCategory) {
 		try {
 			corpMsgBulkTaskCategoryMapper.updateById(corpMsgBulkTaskCategory);
@@ -278,7 +283,7 @@ public class CorpMsgBulkTaskController {
 	/**
 	 * 删除分类
 	 */
-	@PostMapping("/category/delete/{id}")
+	@DeleteMapping("/category/delete/{id}")
 	public Result<String> delCategory(@PathVariable Long id) {
 		int count = corpMsgBulkTaskService.count(Wrappers.lambdaQuery(CorpMsgBulkTask.class).eq(CorpMsgBulkTask::getCategory, id));
 		if (count > 0) {
@@ -291,7 +296,7 @@ public class CorpMsgBulkTaskController {
 	/**
 	 * 分类列表
 	 */
-	@PostMapping("/category/get")
+	@GetMapping("/category/get")
 	public Result<SearchResult<CorpMsgBulkTaskCategory>> getCategory() {
 		SearchResult<CorpMsgBulkTaskCategory> search = beanSearcher.search(CorpMsgBulkTaskCategory.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpTagController.java

@@ -122,8 +122,8 @@ public class CorpTagController {
 	 * 标签管理详情
 	 */
 	@GetMapping("/get/corpTag")
-	public Result<Page<CorpTagBackView>> getCorpTagBackView(@RequestParam(defaultValue = "0") Integer start, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(required = false, defaultValue = "1") Integer type, String[] tagIds, String[] groupIds, String sort, String order) {
-		Page<CorpTagBackView> corpTagBackViews = corpTagService.getCorpTagBackView(start, limit, type, tagIds, groupIds, sort, order);
+	public Result<Page<CorpTagBackView>> getCorpTagBackView(@RequestParam(defaultValue = "0") Integer start, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(required = false, defaultValue = "1") Integer type, String name,  String[] groupIds, String sort, String order) throws Exception {
+		Page<CorpTagBackView> corpTagBackViews = corpTagService.getCorpTagBackView(start, limit, type, name,groupIds, sort, order);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(corpTagBackViews);
 	}