Explorar o código

大学生认证

zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
9607da3d22
Modificáronse 21 ficheiros con 571 adicións e 14 borrados
  1. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserActivityMapper.java
  2. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/UserCertRecordMapper.java
  3. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserStudentCertRecordMapper.java
  4. 54 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserActivity.java
  5. 1 1
      netflix-dao/src/main/java/com/cyksj/model/entity/UserStudentCertRecord.java
  6. 41 0
      netflix-dao/src/main/java/com/cyksj/model/views/CouponReceiptDetailView.java
  7. 59 0
      netflix-dao/src/main/java/com/cyksj/model/views/CouponUsedDetailView.java
  8. 47 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserActivityView.java
  9. 22 0
      netflix-service/src/main/java/com/cyksj/config/YhCertMiniConfig.java
  10. 2 0
      netflix-service/src/main/java/com/cyksj/service/mini/MiniService.java
  11. 8 0
      netflix-service/src/main/java/com/cyksj/service/mini/impl/MiniServiceImpl.java
  12. 17 0
      netflix-service/src/main/java/com/cyksj/service/user/UserActivityService.java
  13. 65 0
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java
  14. 2 0
      netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java
  15. 34 0
      netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java
  16. 74 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/active/UserActivityController.java
  17. 22 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/coupon/CouponController.java
  18. 92 0
      netflix-web/src/main/java/com/cyksj/web/controller/mini/UserCertController.java
  19. 0 0
      netflix-web/src/main/resources/application-dev.yml
  20. 0 0
      netflix-web/src/main/resources/application-prd.yml
  21. 5 0
      netflix-web/src/main/resources/application-pre.yml

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserActivityMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserActivity;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/4/15 16:01
+ */
+public interface UserActivityMapper extends BaseMapper<UserActivity> {
+}

+ 0 - 13
netflix-dao/src/main/java/com/cyksj/mapper/UserCertRecordMapper.java

@@ -1,13 +0,0 @@
-package com.cyksj.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.UserCertRecord;
-
-/**
- * 项目名: yhlxj2
- * 文件名: UserCertRecordMapper
- * 创建者: JavaZou
- * 创建时间:2024/2/21 10:11
- */
-public interface UserCertRecordMapper extends BaseMapper<UserCertRecord> {
-}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserStudentCertRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserStudentCertRecord;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserStudentCertRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/2/21 10:11
+ */
+public interface UserStudentCertRecordMapper extends BaseMapper<UserStudentCertRecord> {
+}

+ 54 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserActivity.java

@@ -0,0 +1,54 @@
+package com.cyksj.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivity
+ * 创建者: JavaZou
+ * 创建时间:2024/4/15 15:44
+ * 官网用户活动表
+ */
+@Getter
+@Setter
+public class UserActivity extends BaseEntity{
+	/**
+	 * 活动名称
+	 */
+	@NotEmpty(message = "活动名称不能为空")
+	private String name;
+
+	/**
+	 * 开始时间
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date startTime;
+
+	/**
+	 * 结束时间
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date endTime;
+
+	/**
+	 * 备注
+	 */
+	private String remark;
+
+	/**
+	 * 优惠券ids
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private String couponIds;
+
+	/**
+	 * 是否删除
+	 */
+	private Boolean deleted;
+}

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/UserCertRecord.java → netflix-dao/src/main/java/com/cyksj/model/entity/UserStudentCertRecord.java

@@ -11,7 +11,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class UserCertRecord extends BaseEntity{
+public class UserStudentCertRecord extends BaseEntity{
 	private Long userId;
 
 	private String name;

+ 41 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CouponReceiptDetailView.java

@@ -0,0 +1,41 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CouponReceiptDetailView
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 16:58
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select id,name from coupon where deleted is true :cid:) c inner join coupon_user cu inner join user u on u.id = cu.user_id")
+public class CouponReceiptDetailView {
+
+	@DbField("cu.id")
+	private Long id;
+
+	@DbField("c.id")
+	private Long couponId;
+
+	@DbField("c.name")
+	private String name;
+
+	@DbField("u.id")
+	private Long userId;
+
+	@DbField("u.nickname")
+	private String nickname;
+
+	@DbField("cu.created_time")
+	private Date receiptTime;
+
+	@DbField("cu.valid_end_time")
+	private Date expiryTime;
+}

+ 59 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CouponUsedDetailView.java

@@ -0,0 +1,59 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CouponUsedDetailView
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 17:05
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select id,name from coupon where deleted is true :cid:) c inner join coupon_user cu inner join user u on u.id = cu.user_id" +
+		" inner join order_don o on o.coupon_user_id = cu.id" +
+		" left join goods_don g on g.id = o.goods_id" +
+		" left join goods_don_sku sku on sku.id = o.sku_id")
+public class CouponUsedDetailView {
+
+	@DbField("cu.id")
+	private Long id;
+
+	@DbField("c.id")
+	private Long couponId;
+
+	@DbField("c.name")
+	private String name;
+
+	@DbField("u.id")
+	private Long userId;
+
+	@DbField("u.nickname")
+	private String nickname;
+
+	@DbField("o.order_no")
+	private String orderNo;
+
+	@DbField("cu.created_time")
+	private Date receiptTime;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String goodsName;
+
+	@DbField("o.created_time")
+	private Date usedTime;
+}

+ 47 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserActivityView.java

@@ -0,0 +1,47 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityView
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 15:43
+ */
+@Getter
+@Setter
+@SearchBean(tables = "user_activity ua",
+		where = "ua.deleted is true")
+public class UserActivityView {
+
+	@DbField("ua.id")
+	private Long id;
+
+	/**
+	 * 活动名称
+	 */
+	@DbField("ua.name")
+	private String name;
+
+	@DbField("ua.start_time")
+	private Date startTime;
+
+	@DbField("ua.end_time")
+	private Date endTime;
+
+	/**
+	 * 优惠券ids
+	 */
+	@DbField("ua.coupon_ids")
+	private String couponIds;
+
+	@DbIgnore
+	private List<CouponView> couponViews;
+}

+ 22 - 0
netflix-service/src/main/java/com/cyksj/config/YhCertMiniConfig.java

@@ -0,0 +1,22 @@
+package com.cyksj.config;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CertMiniConfig
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 12:00
+ */
+@Configuration
+@ConfigurationProperties(prefix = "certmini")
+@Getter
+@Setter
+public class YhCertMiniConfig {
+	private String appId;
+
+	private String secret;
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mini/MiniService.java

@@ -19,4 +19,6 @@ public interface MiniService {
 	Result<String> markArticle(MiniArticleReq miniArticleReq);
 
 	ArticleDetailView getArticleDetailView(Long articleId, Long userId);
+
+	void getStudentIdentity(User user, String code) throws Exception;
 }

+ 8 - 0
netflix-service/src/main/java/com/cyksj/service/mini/impl/MiniServiceImpl.java

@@ -3,6 +3,7 @@ package com.cyksj.service.mini.impl;
 import cn.hutool.core.util.RandomUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.config.YhCertMiniConfig;
 import com.cyksj.config.YhMiniConfig;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
@@ -41,6 +42,8 @@ public class MiniServiceImpl implements MiniService {
 
 	private final YhMiniConfig yhMiniConfig;
 
+	private final YhCertMiniConfig certMiniConfig;
+
 	private final RedisService redisService;
 
 	private final UserMapper userMapper;
@@ -153,6 +156,11 @@ public class MiniServiceImpl implements MiniService {
 		return detailView;
 	}
 
+	@Override
+	public void getStudentIdentity(User user, String code) throws Exception {
+		weChatService.getMiniStudentIdentity(user.getOpenId(), code);
+	}
+
 	public void updateArticleMarkNum(Integer type, Long articleId, Integer offset) {
 		Integer success = 0;
 		while (success != 1) {

+ 17 - 0
netflix-service/src/main/java/com/cyksj/service/user/UserActivityService.java

@@ -0,0 +1,17 @@
+package com.cyksj.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserActivity;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityService
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 12:16
+ */
+public interface UserActivityService extends IService<UserActivity> {
+	void sendStudentCertActivity(User user, String dsCode) throws Exception;
+
+	void saveOrUpdateActivity(UserActivity userActivity) throws Exception;
+}

+ 65 - 0
netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java

@@ -0,0 +1,65 @@
+package com.cyksj.service.user.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.mapper.UserActivityMapper;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.model.entity.CouponUser;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserActivity;
+import com.cyksj.service.mange.coupon.CouponCommonService;
+import com.cyksj.service.user.UserActivityService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 12:16
+ */
+@Service
+@RequiredArgsConstructor
+public class UserActivityServiceImpl extends ServiceImpl<UserActivityMapper, UserActivity> implements UserActivityService {
+	private final CouponCommonService couponCommonService;
+
+	private final UserMapper userMapper;
+
+	@Override
+	public void sendStudentCertActivity(User user, String dsCode) throws Exception {
+		UserActivity activity = getById(1);
+		Long sendUserId = user.getId();
+		if (StrUtil.isNotBlank(dsCode)) {
+			User toUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class).eq(User::getShowId, dsCode).last("limit 1"));
+			if (toUser != null) {
+				sendUserId = toUser.getId();
+			}
+		}
+		if (StrUtil.isNotBlank(activity.getCouponIds())) {
+			//发送优惠券
+			List<Long> couponIds = Jsons.parseList(activity.getCouponIds(), Long.class);
+			for (Long couponId : couponIds) {
+				couponCommonService.sendCouponToUser(sendUserId, 100l, 0l, 0l, 0l, CouponUser.Channel.ques_response);
+			}
+		}
+	}
+
+	@Override
+	public void saveOrUpdateActivity(UserActivity userActivity) throws Exception {
+		checkActivity(userActivity);
+		saveOrUpdate(userActivity);
+	}
+
+
+	public void checkActivity(UserActivity userActivity) throws Exception {
+		String couponIds = userActivity.getCouponIds();
+		if (StrUtil.isNotBlank(couponIds)) {
+			List<Long> couponidsList = Jsons.parseList(couponIds, Long.class);
+			userActivity.setCouponIds(Jsons.toJson(couponidsList));
+		}
+	}
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java

@@ -101,4 +101,6 @@ public interface WeChatService {
     String getMiniURLLink(String accessToken, MiniURLLink miniURLLink) throws Exception;
 
     MiniProgramSession code2Session(String appId, String code) throws Exception;
+
+    void getMiniStudentIdentity(String openId, String code) throws Exception;
 }

+ 34 - 0
netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java

@@ -15,6 +15,7 @@ import com.cyksj.common.util.*;
 import com.cyksj.config.BaseWeChatConfig;
 import com.cyksj.config.WeChatConfig;
 import com.cyksj.config.WeChatFactory;
+import com.cyksj.config.YhCertMiniConfig;
 import com.cyksj.enums.WeChatAuthRedirectUrl;
 import com.cyksj.mapper.WxAppMapper;
 import com.cyksj.mapper.channel.ShopConfigMapper;
@@ -71,6 +72,8 @@ public class WeChatServiceImpl implements WeChatService {
 
     private final SysConfigService sysConfigService;
 
+    private final YhCertMiniConfig certMiniConfig;
+
     @Override
     public String createUrl(String state, String redirectUrl) {
         return createUrl(state,redirectUrl,weChatConfig.getAppid(), WeChatAuthRedirectUrl.BASE.getScope());
@@ -666,4 +669,35 @@ public class WeChatServiceImpl implements WeChatService {
         return wxMpAccountOps.miniProgramCode2Session(appId,code);
     }
 
+    @Override
+    public void getMiniStudentIdentity(String openId, String code) throws Exception {
+        String url = "https://api.weixin.qq.com/intp/quickcheckstudentidentity?access_token=" + getAccessToken(certMiniConfig.getAppId());
+
+        JSONObject params = new JSONObject();
+        params.putOpt("openid", openId);
+        params.putOpt("wx_studentcheck_code", "code");
+
+        HttpResponse<String> response = J11HttpC.custom().url(url).ofPost().body(HttpRequest.BodyPublishers.ofString(params.toString())).send(HttpResponse.BodyHandlers.ofString());
+
+        JSONObject re = Jsons.parseObject(response.body(), JSONObject.class);
+        if (re.getInt("errcode") != 0) {
+            log.info("获取学生信息失败:{}", re.getStr("errmsg"));
+            throw BusinessRuntimeException.getInstance("获取认证信息失败");
+        }
+        Boolean isStudent = re.getBool("is_student");
+        if (isStudent == null || !isStudent) {
+            throw BusinessRuntimeException.getInstance("仅支持大学生用户认证");
+        }
+        Integer bindStatus = re.getInt("bind_status");
+        //绑定状态:
+        //1-未绑定
+        //2-审核中
+        //3-已绑定
+        if (bindStatus == 1) {
+            throw BusinessRuntimeException.getInstance("大学生身份未绑定");
+        }
+        if (bindStatus == 2) {
+            throw BusinessRuntimeException.getInstance("大学生身份审核中");
+        }
+    }
 }

+ 74 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/active/UserActivityController.java

@@ -0,0 +1,74 @@
+package com.cyksj.web.controller.manage.active;
+
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.model.entity.UserActivity;
+import com.cyksj.service.user.UserActivityService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityController
+ * 创建者: JavaZou
+ * 创建时间:2024/4/17 12:22
+ */
+@RestController
+@RequestMapping("/manage/activity")
+@Slf4j
+@RequiredArgsConstructor
+public class UserActivityController {
+	private final UserActivityService userActivityService;
+
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	/**
+	 * 新建活动
+	 */
+	@PostMapping("/post")
+	public Result<String> insertActivity(@RequestBody @Validated UserActivity userActivity) throws Exception {
+		userActivityService.saveOrUpdateActivity(userActivity);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 编辑活动
+	 */
+	@PutMapping("/update")
+	public Result<String> updateActivity(@RequestBody @Validated UserActivity userActivity) throws Exception {
+		userActivityService.saveOrUpdateActivity(userActivity);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 删除活动
+	 */
+	@DeleteMapping("/delete/{id}")
+	public Result<String> deleteActivity(@PathVariable Long id) {
+		UserActivity activity = userActivityService.getById(id);
+		if (activity != null && activity.getDeleted()) {
+			activity.setDeleted(false);
+			userActivityService.updateById(activity);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 活动列表
+	 */
+	@GetMapping("/get")
+	public Result<SearchResult<UserActivity> > get() {
+		SearchResult<UserActivity> search = beanSearcher.search(UserActivity.class, MapUtils.flat(request.getParameterMap()));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+}

+ 22 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/coupon/CouponController.java

@@ -511,4 +511,26 @@ public class CouponController {
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 优惠券领取详情
+	 */
+	@GetMapping("/get/receipt/detail/{couponId}")
+	public Result<SearchResult<CouponReceiptDetailView>> getReceiptDetail(@PathVariable Long couponId) {
+		SearchResult<CouponReceiptDetailView> search = beanSearcher.search(CouponReceiptDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.put("cid",String.format("and id = %s", couponId))
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 优惠券使用详情
+	 */
+	@GetMapping("/get/receipt/detail/{couponId}")
+	public Result<SearchResult<CouponUsedDetailView>> getUsedDetail(@PathVariable Long couponId) {
+		SearchResult<CouponUsedDetailView> search = beanSearcher.search(CouponUsedDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.put("cid",String.format("and id = %s", couponId))
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }

+ 92 - 0
netflix-web/src/main/java/com/cyksj/web/controller/mini/UserCertController.java

@@ -0,0 +1,92 @@
+package com.cyksj.web.controller.mini;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.mapper.UserStudentCertRecordMapper;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserStudentCertRecord;
+import com.cyksj.model.views.CouponView;
+import com.cyksj.model.views.UserActivityView;
+import com.cyksj.service.mini.MiniService;
+import com.cyksj.service.user.UserActivityService;
+import com.cyksj.service.user.UserBindRelationService;
+import com.cyksj.web.util.StpUserUtil;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserCertController
+ * 创建者: JavaZou
+ * 创建时间:2024/4/16 11:34
+ */
+@RestController
+@RequestMapping("/applets/mini/identity")
+@RequiredArgsConstructor
+@Slf4j
+public class UserCertController {
+	private final UserMapper userMapper;
+
+	private final MiniService miniService;
+
+	private final UserActivityService userActivityService;
+
+	private final UserBindRelationService userBindRelationService;
+
+	private final UserStudentCertRecordMapper userStudentCertRecordMapper;
+
+	private final BeanSearcher beanSearcher;
+
+	/**
+	 * 获取学生身份接口
+	 */
+	@GetMapping("/get/student")
+	public Result<String> getStudentIdentity(String code, String dsCode) throws Exception {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		User user = userMapper.selectById(userId);
+		if (StrUtil.isNotBlank(user.getOpenId())) {
+			throw BusinessRuntimeException.getInstance("用户未授权");
+		}
+		//是否认证过
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
+		Integer selectCount = userStudentCertRecordMapper.selectCount(Wrappers.lambdaQuery(UserStudentCertRecord.class)
+				.in(UserStudentCertRecord::getUserId, userIdList));
+		if (selectCount > 0) {
+			throw BusinessRuntimeException.getInstance("已认证大学生身份");
+		}
+		miniService.getStudentIdentity(user, code);
+		//大学生认证活动 若有sid则发送对应用户
+		userActivityService.sendStudentCertActivity(user, dsCode);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 大学生认证活动详情
+	 */
+	@GetMapping("/get/activity/info")
+	public Result<UserActivityView> getIdentityAcInfo() throws Exception {
+		UserActivityView userActivityView = beanSearcher.searchFirst(UserActivityView.class, MapUtils.builder().field(UserActivityView::getId, 1).build());
+		if (userActivityView == null) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		if (StrUtil.isNotBlank(userActivityView.getCouponIds())) {
+			List<Long> couponIds = Jsons.parseList(userActivityView.getCouponIds(), Long.class);
+			userActivityView.setCouponViews(beanSearcher.searchAll(CouponView.class, MapUtils.builder().field(CouponView::getId, couponIds).op(Operator.InList).build()));
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult(userActivityView);
+	}
+
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
netflix-web/src/main/resources/application-dev.yml


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
netflix-web/src/main/resources/application-prd.yml


+ 5 - 0
netflix-web/src/main/resources/application-pre.yml

@@ -161,6 +161,11 @@ yhmini:
   appid: wx383c483d3bcf155a
   secret: bf6ca029a3102f390486a7a14b218b06
 
+#银河录像局大学生认证小程序
+certmini:
+  appid: wx16e441d61fa3fd8a
+  secret: edc2e8ed29a45d6ba266a63bc7ffc2b5
+
 #广告投放小程序
 advertisement:
   appId: wx895f960ea6b8c5d0

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio