Переглянути джерело

fix:生成公众号技师二维码

wrj 1 тиждень тому
батько
коміт
235c10fa30

+ 3 - 1
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/PayController.java

@@ -23,6 +23,7 @@ import com.ijpay.wxpay.enums.v3.BasePayApiEnum;
 import com.ijpay.wxpay.enums.v3.CertAlgorithmTypeEnum;
 import com.ijpay.wxpay.enums.v3.TransferApiEnum;
 import com.ijpay.wxpay.model.v3.*;
+import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension;
 import com.ylx.common.config.WxPayConfig;
 import com.ylx.common.core.domain.R;
 import com.ylx.massage.domain.TRecharge;
@@ -71,9 +72,10 @@ public class PayController {
     @Resource
     private RefundVoucherService refundVoucherService;
 
+//    @Resource
+//    private JsapiServiceExtension service;
     String serialNo;
     String platSerialNo;
-
     /**
      * 小程序微信支付的第一步,统一下单
      */

+ 23 - 1
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/WeChatController.java

@@ -22,8 +22,10 @@ import com.ylx.framework.manager.AsyncManager;
 import com.ylx.framework.manager.factory.AsyncFactory;
 import com.ylx.framework.web.service.WxTokenService;
 import com.ylx.massage.domain.CouponReceive;
+import com.ylx.massage.domain.TJs;
 import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.service.CouponReceiveService;
+import com.ylx.massage.service.TJsService;
 import com.ylx.massage.service.TWxUserService;
 import com.ylx.massage.service.TbFileService;
 import com.ylx.massage.utils.DateTimeUtils;
@@ -96,7 +98,8 @@ public class WeChatController extends BaseController {
     @Autowired
     private TbFileService tbFileService;
 
-
+    @Resource
+    private TJsService jsService;
     @Autowired
     private RedisCache redisCache;
 
@@ -376,6 +379,25 @@ public class WeChatController extends BaseController {
         return weChatUtil.getTicket(token, openId);
     }
 
+    @ApiOperation("获取JS公众号二维码")
+    @RequestMapping(value = "getJSwxQrCode", method = RequestMethod.GET)
+    public void getJSwxQrCode(@RequestParam String jsId) {
+        //获取access_token
+        String token = weChatUtil.getToken();
+        //获取的二维码ticket
+        Map<?, ?> jsTicket = weChatUtil.getJsTicket(token, jsId);
+
+        //获取的二维码ticket
+        //获取二维码图片
+        //String qrCodeUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket;
+        //获取二维码图片
+        //File file = QrCodeUtil.generate(qrCodeUrl, config, FileUtil.file(RuoYiConfig.getUploadPath() + "/code.png"));
+        TJs tjs = new TJs();
+        tjs.setTicket(jsTicket.get("ticket").toString());
+        jsService.updateById(tjs);
+    }
+
+
     @ApiOperation("获取公众号网页二维码")
     @GetMapping("/getweQrCode")
     public AjaxResult weiXinLogin1(String openId) {

+ 5 - 0
nightFragrance-massage/pom.xml

@@ -31,6 +31,11 @@
             <artifactId>IJPay-WxPay</artifactId>
             <version>2.9.10</version>
         </dependency>
+        <dependency>
+            <groupId>com.github.wechatpay-apiv3</groupId>
+            <artifactId>wechatpay-java</artifactId>
+            <version>0.2.17</version>
+        </dependency>
 
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 7 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TJs.java

@@ -272,6 +272,9 @@ public class TJs implements Serializable {
     @ApiModelProperty("收藏人员数量")
     private Integer number;
 
+    @ApiModelProperty("收藏人员数量")
+    private Integer nZan;
+
     @TableField(exist = false)
     @ApiModelProperty("当前用户是否收藏")
     private Boolean isCollection;
@@ -292,6 +295,10 @@ public class TJs implements Serializable {
     @ApiModelProperty("技师评价")
     private List<TComment> comments;
 
+    @ApiModelProperty("技师二维码")
+    private String ticket;
+
+
     public String getcOpenId() {
         return cOpenId;
     }

+ 7 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TJsServiceImpl.java

@@ -297,7 +297,7 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
 
     @Override
     public boolean pcAddJs(TJs js) {
-        if(js.getCity() == null){
+        if (js.getCity() == null) {
             throw new ServiceException("所在城市不能为空");
         }
         // 评分默认最高
@@ -316,7 +316,12 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
         js.setnB2(MassageConstants.INTEGER_ZERO);
         js.setnB3(MassageConstants.INTEGER_ZERO);
         js.setDtCreateTime(LocalDateTime.now());
-        return this.save(js);
+        this.save(js);
+        String token = weChatUtil.getToken();
+        //获取的二维码ticket
+        Map<?, ?> jsTicket = weChatUtil.getJsTicket(token, js.getId());
+        js.setTicket(jsTicket.get("ticket").toString());
+        return this.updateById(js);
     }
 
     @Override

+ 33 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/task/massageTask.java

@@ -15,6 +15,7 @@ import com.ylx.massage.mapper.TConsumptionLogMapper;
 import com.ylx.massage.service.*;
 import com.ylx.massage.utils.DateTimeUtils;
 import com.ylx.massage.utils.LocationUtil;
+import com.ylx.massage.utils.WeChatUtil;
 import com.ylx.system.service.ISysDeptService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +63,9 @@ public class massageTask {
     @Resource
     private TWxUserService userService;
 
+    @Resource
+    private WeChatUtil weChatUtil;
+
 
     public void cancelOrder() {
 
@@ -372,4 +376,33 @@ public class massageTask {
         log.info("结束执行同步技师位置时间,{}", DateUtils.getNowDate());
     }
 
+    public void sysJsWeiTicke() {
+        log.info("开始执行同步技师二维码,{}", DateUtils.getNowDate());
+        long flag = 1L;
+        while (flag > 0L) {
+            LambdaQueryWrapper<TJs> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+            objectLambdaQueryWrapper.gt(TJs::getId, String.valueOf(flag)).orderByAsc(TJs::getId);
+
+            Page<TJs> page = new Page<>();
+            page.setSize(MassageConstants.TWO_HUNDRED);
+            Page<TJs> page1 = jsService.page(page, objectLambdaQueryWrapper);
+
+            if (CollectionUtil.isNotEmpty(page1.getRecords())) {
+                page1.getRecords().forEach(tjs -> {
+                    String token = weChatUtil.getToken();
+                    //获取的二维码ticket
+                    Map<?, ?> jsTicket = weChatUtil.getJsTicket(token, tjs.getId());
+                    tjs.setTicket(jsTicket.get("ticket").toString());
+                    jsService.updateById(tjs);
+                });
+                Optional<String> maxId = page1.getRecords().stream().max(Comparator.comparing(TJs::getId)).map(TJs::getId);
+                flag = Long.parseLong(maxId.orElse("0"));
+            } else {
+                flag = 0L;
+            }
+        }
+        log.info("结束执行同步技师二维码,{}", DateUtils.getNowDate());
+    }
+
 }

+ 23 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/utils/WeChatUtil.java

@@ -223,6 +223,29 @@ public class WeChatUtil {
 
     }
 
+
+    /**
+     * 生成公众号码技师 ticket
+     *
+     * @param token access_token
+     * @return 返回包含微信公众号码ticket的Map
+     */
+    public Map<?, ?> getJsTicket(String token, String jsId) {
+
+        String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;
+
+        String param = "{\"action_name\": \"QR_LIMIT_STR_SCENE\",\"action_info\": {\"scene\": {\"scene_str\": \"" + jsId + "\"}}}";
+
+        String rs = HttpUtil.post(url, param);
+        Map<?, ?> map = JSONObject.parseObject(rs, Map.class);
+        return map;
+
+    }
+
+
+
+
+
     /**
      * 生成公众号码ticket
      *

+ 2 - 0
nightFragrance-massage/src/main/resources/mapper/massage/TJsMapper.xml

@@ -29,6 +29,7 @@
         <result column="n_bili" property="nBili"/>
         <result column="n_num" property="nNum"/>
         <result column="n_num2" property="nNum2"/>
+        <result column="n_zan" property="nZan"/>
         <result column="n_status" property="nStatus"/>
         <result column="n_status2" property="nStatus2"/>
         <result column="n_tong" property="nTong"/>
@@ -68,6 +69,7 @@
         js.n_star,
         js.n_bili,
         js.n_num,
+        js.n_zan,
         js.city,
         js.reason_refusal,
         js.js_grade,