Explorar o código

双十一活动

zouxuan %!s(int64=3) %!d(string=hai) anos
pai
achega
774b4ed742

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java

@@ -117,4 +117,22 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
 	* @date 2021/10/25 15:54
 	*/
 	List<Map<Long,Long>> countOrganGiveMemberNum(@Param("organIdList") List<Integer> organIdList);
+
+	/**
+	* @description: 双十一活动统计学员列表
+	 * @param params
+	* @return java.util.List<com.ym.mec.biz.dal.dto.DoubleEleven2021OrderDetailDto>
+	* @author zx
+	* @date 2021/10/27 13:31
+	*/
+    List<DoubleEleven2021OrderDetailDto> queryDoubleEleven2021OrderDetail(Map<String, Object> params);
+
+    /**
+    * @description: 双十一活动统计学员列表
+     * @param params
+    * @return int
+    * @author zx
+    * @date 2021/10/27 13:32
+    */
+	int countDoubleEleven2021OrderDetail(Map<String, Object> params);
 }

+ 87 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DoubleEleven2021OrderDetailDto.java

@@ -0,0 +1,87 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class DoubleEleven2021OrderDetailDto {
+
+    private Integer userId;
+
+    private String username;
+
+    private String orderNo;
+
+    private BigDecimal amount = BigDecimal.ZERO;
+
+    private Date createTime;
+
+    private Date payTime;
+
+    private String type;
+
+    private Boolean giveMember;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Boolean getGiveMember() {
+        return giveMember;
+    }
+
+    public void setGiveMember(Boolean giveMember) {
+        this.giveMember = giveMember;
+    }
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/DoubleEleven2021QueryInfo.java

@@ -20,8 +20,28 @@ public class DoubleEleven2021QueryInfo extends QueryInfo {
 
     private Date endTime;
 
+    private String giveMemberStartTime;
+
+    private String giveMemberEndTime;
+
     private Boolean giveMemberFlag;
 
+    public String getGiveMemberStartTime() {
+        return giveMemberStartTime;
+    }
+
+    public void setGiveMemberStartTime(String giveMemberStartTime) {
+        this.giveMemberStartTime = giveMemberStartTime;
+    }
+
+    public String getGiveMemberEndTime() {
+        return giveMemberEndTime;
+    }
+
+    public void setGiveMemberEndTime(String giveMemberEndTime) {
+        this.giveMemberEndTime = giveMemberEndTime;
+    }
+
     public String getOrganId() {
         return organId;
     }
@@ -35,6 +55,7 @@ public class DoubleEleven2021QueryInfo extends QueryInfo {
     }
 
     public void setType(Integer type) {
+        type = type==1?216:type==2?215:type==3?218:type==4?217:type==5?219:null;
         this.type = type;
     }
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.DoubleEleven2021QueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
@@ -93,5 +94,5 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
     * @author zx
     * @date 2021/10/26 11:38
     */
-    Object doubleEleven2021OrderDetail(DoubleEleven2021QueryInfo queryInfo);
+    PageInfo<DoubleEleven2021OrderDetailDto> doubleEleven2021OrderDetail(DoubleEleven2021QueryInfo queryInfo);
 }

+ 25 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -1,10 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.ActivityApplyStudentTypeDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
-import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
 import com.ym.mec.biz.dal.entity.Teacher;
@@ -15,6 +12,7 @@ import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -37,6 +35,8 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	private TeacherDao teacherDao;
 	@Autowired
 	private VipGroupCategoryDao vipGroupCategoryDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -366,15 +366,26 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public Object doubleEleven2021OrderDetail(DoubleEleven2021QueryInfo queryInfo) {
-		//EXPLAIN SELECT spo.user_id_,su.username_,spo.order_no_,aum.actual_price_,spo.create_time_,GROUP_CONCAT(vga.attribute1_) type_,cto.id_
-		//FROM student_payment_order spo
-		//LEFT JOIN activity_user_mapper aum ON spo.id_ = aum.payment_order_id_
-		//LEFT JOIN vip_group_activity vga ON vga.id_ = aum.activity_id_
-		//LEFT JOIN sys_user su ON su.id_ = spo.user_id_
-		//LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = spo.user_id_ AND cto.remark_ = '双十一活动赠送会员' AND spo.create_time_ BETWEEN '' AND ''
-		//WHERE spo.status_ = 'SUCCESS' AND spo.type_ = 'DOUBLE_ELEVEN2021'
-		//GROUP BY spo.id_
-		return null;
+	public PageInfo<DoubleEleven2021OrderDetailDto> doubleEleven2021OrderDetail(DoubleEleven2021QueryInfo queryInfo) {
+		String startTime = sysConfigDao.findConfigValue("2021_double_eleven_give_member_start_time");
+		String endTime = sysConfigDao.findConfigValue("2021_double_eleven_give_member_end_time");
+		queryInfo.setGiveMemberStartTime(startTime);
+		queryInfo.setGiveMemberEndTime(endTime);
+		PageInfo<DoubleEleven2021OrderDetailDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<DoubleEleven2021OrderDetailDto> dataList = null;
+		int count = vipGroupActivityDao.countDoubleEleven2021OrderDetail(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = vipGroupActivityDao.queryDoubleEleven2021OrderDetail(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
 	}
 }

+ 51 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -394,4 +394,55 @@
 		</if>
 		GROUP BY o.id_
 	</select>
+	<resultMap id="DoubleEleven2021OrderDetailDto" type="com.ym.mec.biz.dal.dto.DoubleEleven2021OrderDetailDto">
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="amount" column="amount_"/>
+		<result property="createTime" column="create_time_"/>
+		<result property="giveMember" column="give_member_"/>
+		<result property="orderNo" column="order_no_"/>
+		<result property="payTime" column="pay_time_"/>
+		<result property="type" column="type_"/>
+	</resultMap>
+	<sql id="queryDoubleEleven2021OrderDetailSql">
+		WHERE spo.status_ = 'SUCCESS' AND spo.type_ = 'DOUBLE_ELEVEN2021'
+		<if test="search != null and search != ''">
+			AND su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR spo.order_no_ LIKE CONCAT('%',#{search},'%')
+		</if>
+		<if test="startTime != null">
+			AND spo.pay_time_ >= #{startTime}
+		</if>
+		<if test="emdTime != null">
+			AND spo.pay_time_ &lt;= #{endTime}
+		</if>
+		<if test="type != null">
+			AND FIND_IN_SET(#{type},spo.activity_id_)
+		</if>
+		<if test="giveMemberFlag != null and giveMemberFlag == 'true'">
+			AND cto.id_ IS NOT NULL
+		</if>
+		<if test="giveMemberFlag != null and giveMemberFlag == 'false'">
+			AND cto.id_ IS NULL
+		</if>
+	</sql>
+	<select id="queryDoubleEleven2021OrderDetail" resultMap="DoubleEleven2021OrderDetailDto">
+		SELECT spo.user_id_,su.username_,spo.order_no_,SUM(aum.actual_price_) amount_,spo.create_time_,spo.pay_time_,GROUP_CONCAT(vga.attribute1_) type_,
+			   CASE WHEN cto.id_ IS NULL THEN 0 ELSE 1 END give_member_
+		FROM student_payment_order spo
+				 LEFT JOIN activity_user_mapper aum ON spo.id_ = aum.payment_order_id_
+				 LEFT JOIN vip_group_activity vga ON vga.id_ = aum.activity_id_
+				 LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+				 LEFT JOIN cloud_teacher_order cto ON cto.order_id_ = spo.id_
+		<include refid="queryDoubleEleven2021OrderDetailSql"/>
+		GROUP BY spo.id_
+		ORDER BY spo.pay_time_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<select id="countDoubleEleven2021OrderDetail" resultType="java.lang.Integer">
+		SELECT COUNT(spo.id_)
+		FROM student_payment_order spo
+		LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+		LEFT JOIN cloud_teacher_order cto ON cto.order_id_ = spo.id_
+		<include refid="queryDoubleEleven2021OrderDetailSql"/>
+	</select>
 </mapper>

+ 38 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -144,10 +144,46 @@ public class ExportController extends BaseController {
     @Autowired
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
 
+    @ApiOperation(value = "2021双十一学员购买详情")
+    @RequestMapping("export/doubleEleven2021OrderDetail")
+    @PreAuthorize("@pcs.hasPermissions('export/doubleEleven2021OrderDetail')")
+    public void doubleEleven2021OrderDetail(HttpServletResponse response,DoubleEleven2021QueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<DoubleEleven2021OrderDetailDto> rows = vipGroupActivityService.doubleEleven2021OrderDetail(queryInfo).getRows();
+        if(rows.size() < 1){
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名","订单号", "交易金额",
+                    "交易时间", "订单创建时间", "购买课程", "赠送会员"}, new String[]{
+                    "userId", "username", "orderNo","amount", "payTime", "createTime","type",
+                    "giveMember==0?'否':'是'"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
     @ApiOperation(value = "分部2021双11活动统计导出")
-    @RequestMapping("/organDoubleEleven2021Statis")
+    @RequestMapping("export/organDoubleEleven2021Statis")
     @PreAuthorize("@pcs.hasPermissions('export/organDoubleEleven2021Statis')")
-    public void organDoubleEleven2021Statis(Integer organId,String order, String sort,HttpServletResponse response) throws IOException {
+    public void organDoubleEleven2021Statis(HttpServletResponse response,Integer organId,String order, String sort) throws IOException {
         List<DoubleEleven2021Dto> rows = vipGroupActivityService.organDoubleEleven2021Statis(order, sort,organId);
         if(rows.size() < 1){
             throw new BizException("没有可导出数据");