From 95f9ea7eb339c36cade6c67d0385c49ec2d81477 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Wed, 14 Apr 2021 19:39:45 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java |  239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 239 insertions(+), 0 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
new file mode 100644
index 0000000..6466163
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -0,0 +1,239 @@
+package com.matrix.system.shopXcx.api.action;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.component.tools.HttpCurlUtil;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.web.BaseAction;
+import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
+import com.matrix.system.common.bean.BusParameterSettings;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.constance.Dictionary;
+import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
+import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
+import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseDao;
+import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.hive.service.SysVipInfoService;
+import com.matrix.system.score.dao.ScoreVipDetailDao;
+import com.matrix.system.shopXcx.api.WeChatApiTools;
+import com.matrix.system.shopXcx.api.dto.XcxUserSaveUserInfoDto;
+import com.matrix.system.shopXcx.dao.ShopCouponRecordDao;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collections;
+
+/**
+ * @author jyy
+ * @description (用户表)
+ * @date 2019-05-31 10:03
+ */
+@Controller
+@RequestMapping(value = "wxapi/user")
+public class WxUserAction extends BaseAction {
+
+    @Autowired
+    private SysVipInfoService sysVipInfoService;
+
+    @Autowired
+    private SysVipInfoDao sysVipInfoDao;
+
+    @Autowired
+    private ShopSalesmanApplyService shopSalesmanApplyService;
+
+    @Autowired
+    BusParameterSettingsDao busParameterSettingsDao;
+    @Autowired
+    private RedisUserLoginUtils redisUserLoginUtils;
+    @Autowired
+    ShopSalesmanApplyDao salesmanApplyDao;
+
+    @Autowired
+    WeChatApiTools weChatApiTools;
+
+    @Autowired
+    private ScoreVipDetailDao scoreVipDetailDao;
+
+    @Autowired
+    private MoneyCardUseDao moneyCardUseDao;
+
+    @Autowired
+    ShopCouponRecordDao shopCouponRecordDao;
+
+    @Autowired
+    ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
+    @Value("${debug}")
+    private String isDebug;
+
+    /**
+     * 小程序登录
+     *
+     * @param code
+     * @return
+     * @throws Exception
+     * @author JIANGYOUYAO
+     * @email 935090232@qq.com
+     * @date 2018年5月23日
+     */
+    @RequestMapping(value = "/login/{keys}")
+    public @ResponseBody
+    AjaxResult wxLogin(@PathVariable("keys") String code) throws Exception {
+        AjaxResult res = new AjaxResult();
+        LogUtil.info("code:{}" + code);
+        if (StringUtils.isNotBlank(code)) {
+            String requrl = weChatApiTools.getXcxLoginUrl(code, HostInterceptor.getCompanyId());
+            String reslutData = HttpCurlUtil.sendGetHttp(requrl, null);
+            JSONObject json = JSONObject.fromObject(reslutData);
+            LogUtil.debug("微信登录获取到登录信息={}", json);
+
+            if (json.containsKey("errcode")) {
+                res.setStatus(AjaxResult.STATUS_FAIL);
+                res.setInfo("自动登录失败");
+                LogUtil.debug("微信登录获取到异常信息errcode");
+                return res;
+            }
+
+            String openId = json.getString("openid");
+            String sessionKey = json.getString("session_key");
+            LogUtil.debug("openId={},sessionKey={}", openId, sessionKey);
+            // 查询用户是否存在
+            SysVipInfo sysVipInfo = null;
+            synchronized (this) {
+                sysVipInfo = sysVipInfoService.findByOpenId(openId);
+                if (sysVipInfo == null) {
+                    // 新增用户
+                    sysVipInfo = new SysVipInfo();
+                    sysVipInfo.setIsSales(SysVipInfo.NOT_SALES);
+                    sysVipInfo.setOpenId(openId);
+                    sysVipInfo.setSessionKey(sessionKey);
+                    sysVipInfo.setCompanyId(HostInterceptor.getCompanyId());
+                    sysVipInfo.setArrivalWay("微商城");
+                    sysVipInfo.setVipName("微信用户");
+                    sysVipInfo.setVipState(Dictionary.VIP_STATE_HY);
+                    sysVipInfo.setVipType(Dictionary.VIP_TYPE_NOCARD);
+                    sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
+                    sysVipInfo.setVipNo(openId);
+                    sysVipInfoService.add(sysVipInfo);
+
+                }else{
+                    sysVipInfo.setSessionKey(sessionKey);
+                    sysVipInfoDao.update(sysVipInfo);
+                }
+            }
+            // 存放redis
+            sysVipInfo.setLevelCard(null);
+            String token = redisUserLoginUtils.saveUserInfo(sysVipInfo);
+            LogUtil.info("用户token={}", token);
+            res.putInMap("token", token);
+            res.putInMap("userInfo", sysVipInfo);
+            res.setStatus(AjaxResult.STATUS_SUCCESS);
+        } else {
+            res.setStatus(AjaxResult.STATUS_FAIL);
+            res.setInfo("自动登录失败");
+        }
+        return res;
+    }
+
+
+
+    /**
+     * 查询用户信息
+     */
+    @RequestMapping(value = "/findUserInfo")
+    public @ResponseBody
+    AjaxResult findUserInfo() {
+        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        SysVipInfo sysVipInfo = sysVipInfoService.findById(loginUser.getId());
+        sysVipInfo.setPointAll(scoreVipDetailDao.selectUserTotalScore(loginUser.getId()));
+        sysVipInfo.setBalance(moneyCardUseDao.selectVipCardTotalMoney(loginUser.getId()));
+        AjaxResult res = new AjaxResult();
+        res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId()));
+        res.putInMap("prizeCount",activitySignReceiveRecordDao.getSignAwardReceiveCount(loginUser.getId(),loginUser.getCompanyId()));
+        res.putInMap("userInfo", sysVipInfo);
+        res.setStatus(AjaxResult.STATUS_SUCCESS);
+        return res;
+    }
+
+    /**
+     * 根据OpenID查询用户信息
+     */
+    @GetMapping(value = "/findUserInfo/{openId}")
+    public @ResponseBody
+    AjaxResult findUserInfo(@PathVariable String openId) {
+        SysVipInfo sysVipInfo = sysVipInfoService.findByOpenId(openId);
+        SysVipInfo bizUserQuery=new SysVipInfo();
+        bizUserQuery.setNickName(sysVipInfo.getNickName());
+        bizUserQuery.setAvatarUrl(sysVipInfo.getAvatarUrl());
+        bizUserQuery.setOpenId(openId);
+        return AjaxResult.buildSuccessInstance(bizUserQuery);
+    }
+
+
+    /**
+     * 接收用户信息
+     */
+    @PostMapping(value = "/saveUserInfo")
+    public @ResponseBody
+    AjaxResult saveUserInfo(@RequestBody XcxUserSaveUserInfoDto xcxUserSaveUserInfoDto) {
+
+        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        SysVipInfo sysVipInfo=new SysVipInfo();
+        sysVipInfo.setId(loginUser.getId());
+
+        BeanUtil.copyProperties(xcxUserSaveUserInfoDto,sysVipInfo);
+        sysVipInfo.setPhone(xcxUserSaveUserInfoDto.getPhoneNumber());
+        if(StringUtils.isBlank(loginUser.getVipName())||loginUser.getVipName().equals("微信用户")){
+            sysVipInfo.setVipName(xcxUserSaveUserInfoDto.getNickName());
+        }
+        if(StringUtils.isBlank(loginUser.getSex())){
+            sysVipInfo.setSex(xcxUserSaveUserInfoDto.getGender()==1?"男":"女");
+        }
+
+        int i = sysVipInfoDao.update(sysVipInfo);
+
+        checkNeedToBeSalesman(sysVipInfo, loginUser);
+        if (i == 0) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败");
+        }
+        return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(sysVipInfo));
+    }
+
+
+
+    void checkNeedToBeSalesman(SysVipInfo sysVipInfo, SysVipInfo loginUser) {
+        //查询是否需要自动成为分销员
+        if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2)
+                && StringUtils.isNotBlank(sysVipInfo.getNickName())) {//目前还不是分销员
+            BusParameterSettings fxSwith = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_SWITCH, HostInterceptor.getCompanyId());
+            if (fxSwith.getParamValue().equals("1")) {//开启分销
+                BusParameterSettings applyWay = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_WAY, loginUser.getCompanyId());
+                if (applyWay.getParamValue().equals(FenxiaoSettingConstant.FX_APPLY_WAY_AUTO)) {//自动成为分销员
+                    QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("user_id", loginUser.getId());
+                    queryWrapper.eq("apply_status", ShopSalesmanApply.APPLY_STATUS_DSH);
+                    ShopSalesmanApply shopSalesmanApply = salesmanApplyDao.selectOne(queryWrapper);
+                    if (shopSalesmanApply == null) {//没有待审核记录
+                        try {
+                            shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getId(), null, null, 2);
+                        }catch (Exception e){
+                            LogUtil.debug(e.getMessage());
+                        }
+
+                    }
+                }
+            }
+        }
+    }
+
+
+}
\ No newline at end of file

--
Gitblit v1.9.1