Ver Fonte

fix 企业微信车票

zoujiajian há 1 ano atrás
pai
commit
05b4cba3ac

+ 9 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/CorpKfUser.java

@@ -2,7 +2,7 @@ package com.cyksj.model.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.cyksj.model.BaseEntity;
+import com.ejlchina.searcher.bean.DbIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,7 +14,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class CorpKfUser extends BaseEntity {
+public class CorpKfUser extends BaseEntity{
 	private String externalUserid;
 
 	private String unionid;
@@ -25,6 +25,9 @@ public class CorpKfUser extends BaseEntity {
 
 	private String avatar;
 
+	/**
+	 * 微信客服备注
+	 */
 	private String remark;
 
 	/**
@@ -37,4 +40,8 @@ public class CorpKfUser extends BaseEntity {
 	 */
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String followId;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private String followName;
 }

+ 50 - 0
netflix-dao/src/main/java/com/cyksj/model/views/TicketView.java

@@ -1,6 +1,7 @@
 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;
@@ -78,4 +79,53 @@ public class TicketView {
 	 */
 	@DbField("gt.status")
 	private String groupsTripStatus;
+
+	@DbField("gdk.id")
+	private Long skuId;
+
+	@DbField("gd.status")
+	private Boolean goodsStatus;
+
+	/**
+	 * 二级分类
+	 * 虚物品 1邀请制 2非邀请制
+	 */
+	@DbField("gd.second_type")
+	private Integer secondType;
+
+	@DbField("gdk.status")
+	private Boolean skuStatus;
+
+	@DbField("gdk.months")
+	private Integer months;
+
+	@DbField("gdk.days")
+	private Integer days;
+
+	@DbField("gdk.num")
+	private Integer skuNum;
+
+	@DbField("gdk.price")
+	private BigDecimal price;
+
+	@DbField("gdk.is_mirror")
+	private Boolean isMirror;
+
+	@DbField("if(a.api_secret='',false,true)")
+	private Boolean isVerify;
+
+	@DbIgnore
+	private String orderNo;
+
+	@DbIgnore
+	private Long orderId;
+
+	@DbIgnore
+	private String transactionId;
+
+	/**
+	 * 邀请制是否完成
+	 */
+	@DbIgnore
+	private Boolean isComplete;
 }

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/views/YHLXUserDetailView.java

@@ -1,6 +1,7 @@
 package com.cyksj.model.views;
 
 import com.cyksj.model.entity.Address;
+import com.cyksj.model.entity.CorpKfUser;
 import com.cyksj.model.entity.User;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
@@ -67,4 +68,10 @@ public class YHLXUserDetailView {
 	 */
 	@DbIgnore
 	private Boolean isVip;
+
+	/**
+	 * 微信客服 用户信息
+	 */
+	@DbIgnore
+	private CorpKfUser corpKfUser;
 }

+ 38 - 0
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpUserServiceImpl.java

@@ -6,8 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.config.corp.WeChatCorpFactory;
 import com.cyksj.mapper.*;
+import com.cyksj.mapper.corp.CorpFollowMapper;
 import com.cyksj.mapper.corp.CorpUserAuthMapper;
 import com.cyksj.mapper.corp.CorpUserMapper;
+import com.cyksj.mapper.corp.kf.CorpKfUserMapper;
+import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.kf.CorpKfUserInfo;
@@ -65,6 +68,12 @@ public class CorpUserServiceImpl implements CorpUserService {
 
 	private final WxCorpOps wxCorpOps;
 
+	private final CorpKfUserMapper corpKfUserMapper;
+
+	private final CorpFollowMapper corpFollowMapper;
+
+	private final CmsUserMapper cmsUserMapper;
+
 	@Override
 	public YHLXUserDetailView getUserDetailView(String externalUserid, String corpId) throws Exception {
 		CorpUser corpUser = getExternalUserId(corpId, externalUserid);
@@ -123,6 +132,8 @@ public class CorpUserServiceImpl implements CorpUserService {
 				.in(UserIdentity::getUserId, userIdList)
 				.eq(UserIdentity::getTag, UserIdentity.Tag.VIP));
 		view.setIsVip(count2 > 0);
+		//微信客服 用户
+		view.setCorpKfUser(getCorpKfUser(externalUserid));
 		return view;
 	}
 
@@ -284,6 +295,7 @@ public class CorpUserServiceImpl implements CorpUserService {
 					corpUser.setGender(corpKfUserInfo.getGender());
 					corpUser.setAvatar(corpKfUserInfo.getAvatar());
 					corpUser.setType(1);
+					corpUser.setUserId(0l);
 					corpUserMapper.insert(corpUser);
 
 					corpUserAuth = new CorpUserAuth();
@@ -298,4 +310,30 @@ public class CorpUserServiceImpl implements CorpUserService {
 		}
 		return corpUser;
 	}
+
+	private CorpKfUser getCorpKfUser(String externalUserid) {
+		//微信客服用户信息
+		CorpKfUser corpKfUser = corpKfUserMapper.selectOne(Wrappers.lambdaQuery(CorpKfUser.class)
+				.eq(CorpKfUser::getExternalUserid, externalUserid)
+				.last("limit 1"));
+		if (corpKfUser != null) {
+			if (corpKfUser.getIsDevice()) {
+				CorpFollow corpFollow = corpFollowMapper.selectOne(Wrappers.lambdaQuery(CorpFollow.class)
+						.eq(CorpFollow::getUserid, corpKfUser.getFollowId())
+						.last("limit 1"));
+				String followName = null;
+				if (corpFollow != null) {
+					followName = corpFollow.getName();
+					if (corpFollow.getCmsUserId() != null) {
+						CmsUser cmsUser = cmsUserMapper.selectById(corpFollow.getCmsUserId());
+						if (cmsUser != null) {
+							followName = cmsUser.getNickname();
+						}
+					}
+				}
+				corpKfUser.setFollowName(followName);
+			}
+		}
+		return corpKfUser;
+	}
 }

+ 22 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/WxCorpController.java

@@ -7,6 +7,7 @@ import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.snowflake.Sequence;
 import com.cyksj.common.util.Codec;
@@ -19,6 +20,7 @@ import com.cyksj.dto.CorpOauth2UserInfo;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GroupsRelationExpiryRecordMapper;
+import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.corp.CorpFollowMapper;
 import com.cyksj.mapper.corp.CorpUserAuthMapper;
 import com.cyksj.mapper.corp.CorpUserTagMapper;
@@ -93,6 +95,8 @@ public class WxCorpController {
 
 	private final ChatGptAccountService chatGptAccountService;
 
+	private final OrderDonMapper orderDonMapper;
+
 	private final static String CORP_UUID = "corp-uuid";
 
 	/**
@@ -465,6 +469,24 @@ public class WxCorpController {
 				.field(TicketView::getGrStatus, List.of("validity", "outside")).op(Operator.InList)
 				.orderBy(TicketView::getExpiryTime).asc()
 				.build());
+		ticketViews.getDataList().forEach(ticket->{
+			OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
+					.eq(OrderDon::getRelationId, ticket.getRelationId())
+					.eq(OrderDon::getUserId, ticket.getUserId())
+					.eq(OrderDon::getOrderType, 1)
+					.notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
+					.orderByDesc(OrderDon::getId)
+					.last("limit 1"));
+			if (orderDon != null) {
+				ticket.setOrderNo(orderDon.getOrderNo());
+				ticket.setOrderId(orderDon.getId());
+				ticket.setTransactionId(orderDon.getTransactionId());
+				if (ticket.getSecondType() != null && ticket.getSecondType() == 1) {
+					//是否完成邀请 根据订单状态
+					ticket.setIsComplete(orderDon.getStatus() == OrderDon.Status.complete ? true : false);
+				}
+			}
+		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(ticketViews);
 	}