Parcourir la source

配置信息切换成优软商城公众号信息

liusw il y a 7 ans
Parent
commit
349540f616

+ 7 - 0
src/main/java/com/uas/platform/b2c/common/account/dao/UserDao.java

@@ -131,4 +131,11 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
 	@Query("select u.userUU from User u inner join u.enterprises as e where e.uu = :enUU and u.userName like %:userName%")
 	public List<Long> findUserByUserNameLikeAndEnUU(@Param("userName") String userName, @Param("enUU") Long enUU);
+
+	/**
+	 * 根据openid获取用户信息
+	 * @param openId
+	 * @return
+	 */
+	public User findUsersByOpenId(String openId);
 }

+ 8 - 8
src/main/java/com/uas/platform/b2c/common/weixin/contoller/WeChatController.java

@@ -1,18 +1,13 @@
 package com.uas.platform.b2c.common.weixin.contoller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.weixin.model.MessageModel;
-import com.uas.platform.b2c.common.weixin.model.TemplateData;
 import com.uas.platform.b2c.common.weixin.service.WeChatService;
 import com.uas.platform.b2c.common.weixin.util.CheckoutUtil;
-import com.uas.platform.b2c.common.weixin.util.WeChatUtil;
-import com.uas.platform.b2c.fa.payment.utils.StringUtils;
-import com.uas.sso.common.util.HttpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -94,12 +89,17 @@ public class WeChatController {
      * @return
      */
     @RequestMapping(value = "/sendTemplateMessage", method = RequestMethod.POST)
-    public ModelMap sendTemplateMessage(List<MessageModel> messages){
+    public ModelMap sendTemplateMessage(@RequestBody List<MessageModel> messages){
         return weChatService.sendTemplateMessage(messages);
     }
 
+    /**
+     * 绑定用户
+     * @param user
+     * @return
+     */
     @RequestMapping(value = "/bindUser", method = RequestMethod.POST)
-    public ModelMap bindUser(User user){
+    public ModelMap bindUser(@RequestBody User user){
         return weChatService.bindUser(user);
     }
 }

+ 56 - 7
src/main/java/com/uas/platform/b2c/common/weixin/service/impl/WeChatServiceImpl.java

@@ -3,16 +3,19 @@ package com.uas.platform.b2c.common.weixin.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.weixin.model.MessageModel;
-import com.uas.platform.b2c.common.weixin.model.TemplateData;
+import com.uas.platform.b2c.common.weixin.model.TemplateDataDetail;
 import com.uas.platform.b2c.common.weixin.model.TemplateMessage;
 import com.uas.platform.b2c.common.weixin.service.WeChatService;
 import com.uas.platform.b2c.common.weixin.util.WeChatUtil;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.entity.UserAccount;
 import com.uas.sso.entity.UserView;
 import com.uas.sso.util.AccountUtils;
+import net.sf.json.JSONArray;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
@@ -20,6 +23,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author liusw
@@ -40,12 +44,32 @@ public class WeChatServiceImpl implements WeChatService{
             result.put("headimgurl", userInfo.getString("headimgurl"));
             String openid = userInfo.getString("openid");
             result.put("openid", openid);
-            // todo 检查当前用户是否绑定
-            result.put("status", 0);
+            User user = userDao.findUsersByOpenId(openid);
+            if (StringUtils.isEmpty(user)) {
+                result.put("status", 0);
+            } else {
+                result.put("status", 1);
+                // 转成userAccount
+                UserAccount userAccount = convertUserAccount(user);
+                // 企业信息单独提出
+                Set<Enterprise> enterprises = user.getEnterprises();
+                result.put("userAccount", userAccount);
+                result.put("enterprises", enterprises);
+            }
         }
         return result;
     }
 
+    private UserAccount convertUserAccount(User user) {
+        UserAccount userAccount = new UserAccount();
+        userAccount.setAppId("mall");
+        userAccount.setVipName(user.getUserName());
+        userAccount.setEmail(user.getUserEmail());
+        userAccount.setMobile(user.getUserTel());
+        userAccount.setUserUU(user.getUserUU());
+        return userAccount;
+    }
+
     @Override
     public ModelMap sendTemplateMessage(List<MessageModel> messages) {
         ModelMap result = new ModelMap();
@@ -57,12 +81,22 @@ public class WeChatServiceImpl implements WeChatService{
             JSONObject jsonObject = JSON.parseObject(res.getContent());
             String access_token = jsonObject.getString("access_token");
             String sendTemplateUrl = WeChatUtil.GET_ACCESS_TOKEN.replace("ACCESS_TOKEN", access_token);
+            // 模板内容设置
             TemplateMessage templateMessage = new TemplateMessage();
             templateMessage.setTemplateId(WeChatUtil.INQUIRY_TEMPLATE_ID);
+            templateMessage.setUrl("https://www.usoftmall.com/vendor#/seekPurchase");
+            TemplateDataDetail first = new TemplateDataDetail();
+            TemplateDataDetail remark = new TemplateDataDetail();
+            remark.setValue("快登陆优软商城查看详情吧!");
             for (MessageModel messageModel : messages) {
                 User user= userDao.findOne(messageModel.getReceiverUu());
-//                String jsonstr = array.toString();
-//                HttpUtil.doPost(sendTemplateUrl, jsonstr);
+                if (!StringUtils.isEmpty(user.getOpenId())) {
+                    templateMessage.setTouser(user.getOpenId());
+                    first.setValue(messageModel.getContent());
+                    JSONArray array = JSONArray.fromObject(templateMessage);
+                    String jsonstr = array.toString();
+                    HttpUtil.doPost(sendTemplateUrl, jsonstr);
+                }
             }
             result.put("success", true);
             return result;
@@ -78,7 +112,7 @@ public class WeChatServiceImpl implements WeChatService{
     public ModelMap bindUser(User user) {
         ModelMap result = new ModelMap();
         // 账户中心校验手机号和密码是否正确
-        if (StringUtils.isEmpty(user) || StringUtils.isEmpty(user.getUserTel()) || StringUtils.isEmpty(user.getUserPwd())) {
+        if (StringUtils.isEmpty(user) || StringUtils.isEmpty(user.getUserTel()) || StringUtils.isEmpty(user.getUserPwd()) || StringUtils.isEmpty(user.getOpenId())) {
             throw new IllegalOperatorException("信息不完整!");
         }
         // 是否存在用户信息
@@ -86,16 +120,31 @@ public class WeChatServiceImpl implements WeChatService{
         if (CollectionUtils.isEmpty(oldUsers)) {
             throw new IllegalOperatorException("未找到用户信息");
         }
+        User judgeUser = userDao.findUsersByOpenId(user.getOpenId());
+        if (!StringUtils.isEmpty(judgeUser)) {
+            throw new IllegalOperatorException("该微信号已被绑定");
+        }
         UserView userView = new UserView();
         userView.setMobile(user.getUserTel());
         userView.setPassword(user.getUserPwd());
         boolean pass = false;
         try {
+            User oldUser = oldUsers.get(0);
+            if (!StringUtils.isEmpty(oldUser.getOpenId())) {
+                throw new IllegalOperatorException("该用户已经绑定微信号");
+            }
             pass = AccountUtils.fuzzyCheckPassword(userView);
             if (!pass) {
                 throw new IllegalOperatorException("手机号或密码不正确");
             }
-            user = oldUsers.get(0);
+            oldUser.setOpenId(user.getOpenId());
+            user = userDao.save(oldUser);
+            // 转成UserAccount便于登录
+            UserAccount userAccount = convertUserAccount(user);
+            // 企业信息单独提出
+            Set<Enterprise> enterprises = user.getEnterprises();
+            result.put("userAccount", userAccount);
+            result.put("enterprises", enterprises);
             result.put("success", true);
             return result;
         } catch (Exception e) {

+ 6 - 3
src/main/java/com/uas/platform/b2c/common/weixin/util/WeChatUtil.java

@@ -9,14 +9,17 @@ public class WeChatUtil {
     /**
      * appid
      */
-    public static final String APPID = "wxd29bbca61728b189";
+    public static final String APPID = "wxb3274b676737a319";
 
     /**
      * appsecret
      */
-    public static final String APPSECRET = "57c19428c09de7ab9d38125a757fafd5";
+    public static final String APPSECRET = "2d453655ce03869d9b14ff2f9f62a634";
 
-    public static final String INQUIRY_TEMPLATE_ID = "";
+    /**
+     * 模板ID
+     */
+    public static final String INQUIRY_TEMPLATE_ID = "KSuGwBD2fOhlODgXGKccXj4400rGTpCzl2e0IHqgTTc";
 
     /**
      * 发送模板消息url

+ 1 - 2
src/main/webapp/WEB-INF/spring/webmvc.xml

@@ -121,8 +121,7 @@
 			<mvc:exclude-mapping path="/basic/enterprise/**/info"/>
 			<mvc:exclude-mapping path="/vendor/introduction/vendor/**" />
 			<mvc:exclude-mapping path="/vendor/introduction/product/**" />
-			<mvc:exclude-mapping path="/wx/check"/>
-			<mvc:exclude-mapping path="/wx/getWxUserInfo"/>
+			<mvc:exclude-mapping path="/wx/**"/>
 			<bean class="com.uas.platform.b2c.core.filter.SSOInterceptor"></bean>
 		</mvc:interceptor>
 		<!-- 对所有的请求拦截,将Session中的User信息设置进SystemSession -->