Browse Source

Merge branch 'children_day'

周箭河 4 năm trước cách đây
mục cha
commit
17f9193080

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeInfoDao.java

@@ -2,7 +2,17 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ChildrenDayDegreeInfo;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
-public interface ChildrenDayDegreeInfoDao extends BaseDAO<Integer,ChildrenDayDegreeInfo> {
+import java.util.List;
 
+public interface ChildrenDayDegreeInfoDao extends BaseDAO<Integer, ChildrenDayDegreeInfo> {
+
+    /**
+     * 获取已缴费的用户
+     *
+     * @param userIds
+     * @return
+     */
+    List<Integer> getPayedUser(@Param("userIds") List<Integer> userIds);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayReserveDao.java

@@ -64,6 +64,7 @@ public interface ChildrenDayReserveDao extends BaseDAO<Integer, ChildrenDayReser
 
     /**
      * 导出详情
+     *
      * @param queryInfo
      * @return
      */
@@ -77,4 +78,11 @@ public interface ChildrenDayReserveDao extends BaseDAO<Integer, ChildrenDayReser
      */
     List<ChildrenStatisticsDetailDto> getSendMsgList(@Param("msgDtos") List<ChildrenDayMsgDto> msgDtos);
 
+
+    /**
+     * 修改发送短信的状态
+     *
+     * @param userIds
+     */
+    Integer updateSendMasStatus(@Param("userIds") List<Integer> userIds);
 }

+ 30 - 23
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ChildrenDayReserve.java

@@ -3,53 +3,60 @@ package com.ym.mec.biz.dal.entity;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
 import java.util.Date;
 
-@ApiModel(value="com-domain-ChildrenDayReserve")
+@ApiModel(value = "com-domain-ChildrenDayReserve")
 public class ChildrenDayReserve {
-    @ApiModelProperty(value="")
+    @ApiModelProperty(value = "")
     private Integer id;
 
     /**
-    * 用户id
-    */
-    @ApiModelProperty(value="用户id")
+     * 用户id
+     */
+    @ApiModelProperty(value = "用户id")
     private Integer userId;
 
     /**
-    * 分部id
-    */
-    @ApiModelProperty(value="分部id")
+     * 分部id
+     */
+    @ApiModelProperty(value = "分部id")
     private Integer organId;
 
     /**
-    * 合作单位id
-    */
-    @ApiModelProperty(value="合作单位id")
+     * 合作单位id
+     */
+    @ApiModelProperty(value = "合作单位id")
     private Integer cooperationOrganId;
 
     /**
-    * 乐团id
-    */
-    @ApiModelProperty(value="乐团id")
+     * 乐团id
+     */
+    @ApiModelProperty(value = "乐团id")
     private String musicGroupId;
 
     /**
-    * 是否预约 0-否 1-是
-    */
-    @ApiModelProperty(value="是否预约 0-否 1-是")
+     * 是否预约 0-否 1-是
+     */
+    @ApiModelProperty(value = "是否预约 0-否 1-是")
     private YesOrNoEnum isReserve;
 
     /**
-    * 创建时间
-    */
-    @ApiModelProperty(value="创建时间")
+     * 是否已发短信 0-否 1-是
+     */
+    @ApiModelProperty(value = "是否已发短信 0-否 1-是")
+    private YesOrNoEnum isSendMsg = YesOrNoEnum.NO;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
     /**
-    * 更新时间
-    */
-    @ApiModelProperty(value="更新时间")
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
     @ApiModelProperty(value = "当前的缴费状态 0-正常 1-缴费中")

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayDegreeInfoService.java

@@ -5,6 +5,8 @@ import com.ym.mec.biz.dal.entity.ChildrenDayDegreeInfo;
 
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 
 public interface ChildrenDayDegreeInfoService extends BaseService<Integer, ChildrenDayDegreeInfo> {
 
@@ -15,5 +17,11 @@ public interface ChildrenDayDegreeInfoService extends BaseService<Integer, Child
      */
     ChildrenDayDegreeInfo addInfo(Long orderId);
 
+    /**
+     * 获取已付费的用户
+     * @param userIds
+     * @return
+     */
+    List<Integer> getPayedUser(List<Integer> userIds);
 
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayDegreeInfoServiceImpl.java

@@ -67,4 +67,9 @@ public class ChildrenDayDegreeInfoServiceImpl extends BaseServiceImpl<Integer, C
         }
         return childrenDayDegreeInfo;
     }
+
+    @Override
+    public List<Integer> getPayedUser(List<Integer> userIds) {
+       return childrenDayDegreeInfoDao.getPayedUser(userIds);
+    }
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java

@@ -444,15 +444,29 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
     @Override
     public Boolean sendMsg(List<ChildrenDayMsgDto> msgDtos) {
         List<ChildrenStatisticsDetailDto> reserves = childrenDayReserveDao.getSendMsgList(msgDtos);
+        if (reserves.size() <= 0) {
+            return true;
+        }
 
         Map<Integer, String> userMap = new HashMap<>();
         Map<Integer, String> userPhoneMap = new HashMap<>();
 
+        List<Integer> userList = reserves.stream().map(ChildrenStatisticsDetailDto::getUserId).collect(Collectors.toList());
+        List<Integer> payedUserIds = childrenDayDegreeInfoService.getPayedUser(userList);
+
         for (ChildrenStatisticsDetailDto reserve : reserves) {
+            if (payedUserIds.contains(reserve.getUserId())) {
+                userList.remove(reserve.getUserId());
+                continue;
+            }
             userMap.put(reserve.getUserId(), reserve.getUserId().toString());
             userPhoneMap.put(reserve.getUserId(), reserve.getPhone());
         }
 
+        if (userMap.size() <= 0) {
+            return true;
+        }
+
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         String pushUrl = baseApiUrl + "/#/childrenPayment";
 
@@ -461,6 +475,8 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
 
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.CHILDREN_DAY_NOTICE_MSG,
                 userPhoneMap, null, 0, null, null, HttpUtil.getSortUrl(pushUrl));
+
+        childrenDayReserveDao.updateSendMasStatus(userList);
         return true;
     }
 }

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeInfoDao.xml

@@ -106,4 +106,11 @@
         SELECT COUNT(*)
         FROM children_day_degree_info
     </select>
+
+    <select id="getPayedUser" resultType="java.lang.Integer">
+        SELECT * FROM children_day_degree_info WHERE user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </select>
 </mapper>

+ 27 - 14
mec-biz/src/main/resources/config/mybatis/ChildrenDayReserveMapper.xml

@@ -9,6 +9,7 @@
         <result column="cooperation_organ_id_" property="cooperationOrganId"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="is_reserve_" property="isReserve" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_send_msg_" property="isSendMsg" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
     </resultMap>
@@ -51,6 +52,9 @@
             <if test="isReserve != null">
                 is_reserve_ = #{isReserve,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="isSendMsg != null">
+                is_send_msg_ = #{isSendMsg,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="createTime != null">
                 create_time_ = #{createTime},
             </if>
@@ -219,18 +223,19 @@
     </select>
     <select id="exportStatisticsDetail" resultMap="ChildrenStatisticsDetailDtoMap">
         SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,cdr.user_id_,
-               su.username_,su.phone_,s.name_ subject_name_,st.current_class_,sut.real_name_,cdr.is_reserve_,cdd.grade_level_,cdd.theory_level_,
-               CASE WHEN cdd.vip_1v1_price_ > 0 OR cdd.vip_1v2_price_ > 0 THEN 1 ELSE 0 END buy_vip_flag_,
-               CASE WHEN cdd.theory_course_price_ > 0 THEN 1 ELSE 0 END buy_theory_course_flag_,cdd.total_amount_
+        su.username_,su.phone_,s.name_
+        subject_name_,st.current_class_,sut.real_name_,cdr.is_reserve_,cdd.grade_level_,cdd.theory_level_,
+        CASE WHEN cdd.vip_1v1_price_ > 0 OR cdd.vip_1v2_price_ > 0 THEN 1 ELSE 0 END buy_vip_flag_,
+        CASE WHEN cdd.theory_course_price_ > 0 THEN 1 ELSE 0 END buy_theory_course_flag_,cdd.total_amount_
         FROM children_day_reserve cdr
-                 LEFT JOIN children_day_degree_info cdd ON cdr.id_ = cdd.reserve_id_
-                 LEFT JOIN organization o ON o.id_ = cdr.organ_id_
-                 LEFT JOIN cooperation_organ co ON co.id_ = cdr.cooperation_organ_id_
-                 LEFT JOIN music_group mg ON mg.id_ = cdr.music_group_id_
-                 LEFT JOIN student st ON st.user_id_ = cdr.user_id_
-                 LEFT JOIN sys_user sut ON sut.id_ = st.teacher_id_
-                 LEFT JOIN sys_user su ON su.id_ = cdr.user_id_
-                 LEFT JOIN `subject` s ON s.id_ = cdd.subject_id_
+        LEFT JOIN children_day_degree_info cdd ON cdr.id_ = cdd.reserve_id_
+        LEFT JOIN organization o ON o.id_ = cdr.organ_id_
+        LEFT JOIN cooperation_organ co ON co.id_ = cdr.cooperation_organ_id_
+        LEFT JOIN music_group mg ON mg.id_ = cdr.music_group_id_
+        LEFT JOIN student st ON st.user_id_ = cdr.user_id_
+        LEFT JOIN sys_user sut ON sut.id_ = st.teacher_id_
+        LEFT JOIN sys_user su ON su.id_ = cdr.user_id_
+        LEFT JOIN `subject` s ON s.id_ = cdd.subject_id_
         <where>
             <if test="cooperationId != null">
                 AND cdr.cooperation_organ_id_ = #{cooperationId}
@@ -310,14 +315,22 @@
         SELECT cdr.*,su.phone_ FROM children_day_reserve cdr
         LEFT JOIN sys_user su ON su.id_ = cdr.user_id_
         <where>
-            <foreach collection="msgDtos" item="msgDto">
+            (cdr.is_reserve_ = 1 AND is_send_msg_ = 0) AND
+            <foreach collection="msgDtos" item="msgDto" open="(" close=")" separator="OR">
                 <if test="msgDto.musicGroupId != null">
-                    OR (cdr.organ_id_=#{msgDto.organId} AND cdr.music_group_id_ = #{msgDto.musicGroupId})
+                    (cdr.organ_id_=#{msgDto.organId} AND cdr.music_group_id_ = #{msgDto.musicGroupId})
                 </if>
                 <if test="msgDto.musicGroupId == null">
-                    OR (cdr.organ_id_=#{msgDto.organId} AND cdr.music_group_id_ IS NULL)
+                    (cdr.organ_id_=#{msgDto.organId} AND cdr.music_group_id_ IS NULL)
                 </if>
             </foreach>
         </where>
     </select>
+
+    <update id="updateSendMasStatus">
+        UPDATE children_day_reserve SET is_send_msg_ = 1 WHERE user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </update>
 </mapper>