he2802 преди 1 година
родител
ревизия
5634d6355f

+ 8 - 4
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -87,6 +87,7 @@ import com.zhongzheng.modules.top.user.bo.TopSysTenantRegisterAddBo;
 import com.zhongzheng.modules.top.user.service.ITopSysTenantRegisterService;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
+import com.zhongzheng.modules.user.vo.UserStudyTimeVo;
 import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import io.swagger.annotations.ApiOperation;
@@ -95,10 +96,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -643,6 +641,12 @@ public class CommonController extends BaseController {
         return AjaxResult.success("成功", iDistributionCashWithdrawalService.payCashCallBack(bo) ? 1 : 0);
     }
 
+    @ApiOperation("根据身份证查询当前学员是否有学习")
+    @GetMapping("common/free/getStudyTimeByCard")
+    public AjaxResult<UserStudyTimeVo> getStudyTimeByCard(@RequestParam("idCard")String idCard) {
+        return AjaxResult.success(iUserService.getStudyTimeByCard(idCard));
+    }
+
     /**
      * 获取企业ID
      */

+ 53 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -86,6 +86,13 @@ import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -262,6 +269,32 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
     @Override
     public List<UserVo> dangAnList(UserQueryBo bo) {
+        if (ObjectUtils.isNotNull(bo.getApplyDateTime()) && bo.getApplyDateTime().length() == 6){
+            //根据月份筛选
+            String dateStr = String.format(bo.getApplyDateTime()); // 指定年月
+            LocalDate date = LocalDate.parse(dateStr + "01", DateTimeFormatter.BASIC_ISO_DATE);
+            LocalDate dateFirst = date.with(TemporalAdjusters.firstDayOfMonth()); // 指定年月的第一天
+            LocalDate dateEnd = date.with(TemporalAdjusters.lastDayOfMonth()); // 指定年月的最后一天
+            ZonedDateTime zonedDateTime1 = dateFirst.atStartOfDay(ZoneId.systemDefault());
+            Date date1 = Date.from(zonedDateTime1.toInstant());
+            ZonedDateTime zonedDateTime = dateEnd.atStartOfDay(ZoneId.systemDefault());
+            Date date2 = Date.from(zonedDateTime.toInstant());
+            Long startTime = date1.getTime()/1000;
+            Long endTime = (date2.getTime()/1000) + 86400;
+            bo.setMonthStartTime(startTime);
+            bo.setMonthEndTime(endTime);
+        }else if (ObjectUtils.isNotNull(bo.getApplyDateTime()) && bo.getApplyDateTime().length() > 6){
+            //根据某天筛选
+            String dateStr = String.format(bo.getApplyDateTime());
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            try {
+                Date parse = sdf.parse(dateStr);
+                bo.setMonthStartTime(parse.getTime()/1000);
+                bo.setMonthEndTime(parse.getTime()/1000);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
         List<User> list = baseMapper.dangAnList(bo);
         return entity2UserVo(list);
     }
@@ -2028,6 +2061,26 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         iSysTaskService.updateById(task);
     }
 
+    @Override
+    public UserStudyTimeVo getStudyTimeByCard(String idCard) {
+        UserStudyTimeVo vo = new UserStudyTimeVo();
+        vo.setIdCard(idCard);
+        User user = getByCardNoTenant(idCard);
+        if (ObjectUtils.isNull(user)){
+            vo.setStudyFlag(false);
+            return vo;
+        }
+        //查询是否有二建课程在学习
+        Long studyTime = baseMapper.getFistStudyTime(user.getUserId(),user.getTenantId(),"继续教育二级建造师");
+        if (ObjectUtils.isNull(studyTime)){
+            vo.setStudyFlag(false);
+            return vo;
+        }
+        vo.setStudyFlag(true);
+        vo.setStudyStartTime(studyTime);
+        return vo;
+    }
+
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
         if(Validator.isEmpty(bo.getAccount())){

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserQueryBo.java

@@ -227,4 +227,26 @@ public class UserQueryBo extends BaseEntity {
 	@ApiModelProperty("承诺书签名:1是 0否")
 	private Integer promiseSign;
 
+	/** 考试开始时间段 */
+	@ApiModelProperty("考试开始时间段")
+	private String applySiteStartTime;
+
+	/** 考试结束时间段 */
+	@ApiModelProperty("考试结束时间段")
+	private String applySiteEndTime;
+
+	/** 考试日期 */
+	@ApiModelProperty("考试日期")
+	private Long applySiteExamTime;
+
+	/** 月份 */
+	@ApiModelProperty("时间")
+	private String ApplyDateTime;
+
+	@ApiModelProperty("月份开始时间")
+	private Long monthStartTime;
+
+	@ApiModelProperty("月份结束时间")
+	private Long monthEndTime;
+
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMapper.java

@@ -86,4 +86,7 @@ public interface UserMapper extends BaseMapper<User> {
 
     @InterceptorIgnore(tenantLine = "true")
     User getByCardNoTenant(String idCard);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Long getFistStudyTime(@Param("userId")Long userId,@Param("tenantId")Long tenantId,@Param("businessName")String businessName);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -160,4 +160,6 @@ public interface IUserService extends IService<User> {
 	List<UserDownloadVo> userDataDownloadList(Long userId);
 
 	void userDataDownloadUp(UserDataDownloadUpBo bo);
+
+	UserStudyTimeVo getStudyTimeByCard(String idCard);
 }

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserStudyTimeVo.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.user.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年03月20日 9:08
+ */
+@Data
+public class UserStudyTimeVo implements Serializable {
+
+    private String idCard;
+
+    private Boolean studyFlag;
+
+    private Long studyStartTime;
+}

+ 45 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -652,6 +652,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             LIMIT 1
     </select>
 
+    <select id="getFistStudyTime" parameterType="map" resultType="java.lang.Long">
+        SELECT
+        ustp.create_time
+        FROM
+        user_study_record usr
+        INNER JOIN user_study_record_photo ustp ON usr.record_id = ustp.record_id
+        LEFT JOIN goods g ON usr.goods_id = g.goods_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN class_grade cg ON usr.grade_id = cg.grade_id
+        WHERE
+        usr.current_status = 1
+        AND usr.user_id = #{userId}
+        AND usr.tenant_id = #{tenantId}
+        AND INSTR( CONCAT( cet.education_name, cb.business_name, cpt.project_name ), #{businessName} )
+        AND cg.class_start_time &lt;= UNIX_TIMESTAMP(NOW())
+        AND cg.class_end_time &gt;= UNIX_TIMESTAMP(NOW())
+        AND cg.`status` = 1
+        ORDER BY ustp.create_time ASC LIMIT 1
+    </select>
+
     <select id="getUserOrderCount" parameterType="map" resultType="java.lang.Long">
         SELECT
             COUNT(o.order_sn)
@@ -718,6 +740,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND (SELECT COUNT(up.id) FROM user_profile up WHERE up.user_id = u.user_id AND up.current_status = 1
             AND INSTR(up.key_value,'"fieldKey":"commitment_electr_signature","value":"oss/images/avatar')) = 0
         </if>
+        <if test="(applySiteExamTime != null and applySiteExamTime != '' ) or
+                        (monthStartTime != null and monthStartTime != '' ) or
+                        (monthEndTime != null and monthEndTime != '') or
+                        (applySiteStartTime != null and applySiteStartTime != '') or
+                        (applySiteEndTime != null and applySiteEndTime != '')">
+            AND (SELECT COUNT(us.subscribe_id) FROM user_subscribe us WHERE us.user_id = u.user_id AND us.subscribe_status = 1
+            <if test="applySiteExamTime != null and applySiteExamTime != '' ">
+                and us.apply_site_exam_time = #{applySiteExamTime}
+            </if>
+            <if test="monthStartTime != null and monthStartTime != '' ">
+                and us.apply_site_exam_time &gt;= #{monthStartTime}
+            </if>
+            <if test="monthEndTime != null and monthEndTime != '' ">
+                and us.apply_site_exam_time &lt;= #{monthEndTime}
+            </if>
+            <if test="applySiteStartTime != null and applySiteStartTime != '' ">
+                and us.apply_site_start_time = #{applySiteStartTime}
+            </if>
+            <if test="applySiteEndTime != null and applySiteEndTime != '' ">
+                and us.apply_site_end_time = #{applySiteEndTime}
+            </if>
+            ) > 0
+        </if>
         order by u.user_id desc
     </select>