Kaynağa Gözat

pos机登录接口

jk-GitHub-coder 4 yıl önce
ebeveyn
işleme
c9f3d239f6
23 değiştirilmiş dosya ile 379 ekleme ve 56 silme
  1. 6 0
      YijiaRestful/pom.xml
  2. 4 1
      YijiaRestful/src/main/java/com/platform/yijia/YijiaApplication.java
  3. 24 11
      YijiaRestful/src/main/java/com/platform/yijia/controller/AppUserInfoController.java
  4. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/CustomerGradeController.java
  5. 2 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/IntegralShoppingMallController.java
  6. 80 30
      YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java
  7. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java
  8. 55 0
      YijiaRestful/src/main/java/com/platform/yijia/controller/PosMachineController.java
  9. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/StationClassStructureController.java
  10. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/StationController.java
  11. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/SydDeptController.java
  12. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/controller/WXLoginController.java
  13. 8 0
      YijiaRestful/src/main/java/com/platform/yijia/dao/PosMachineMapper.java
  14. 29 0
      YijiaRestful/src/main/java/com/platform/yijia/param/request/LoginBody.java
  15. 52 0
      YijiaRestful/src/main/java/com/platform/yijia/pojo/SysRole.java
  16. 1 1
      YijiaRestful/src/main/java/com/platform/yijia/pojo/SysUser.java
  17. 8 0
      YijiaRestful/src/main/java/com/platform/yijia/service/PosMachineService.java
  18. 20 0
      YijiaRestful/src/main/java/com/platform/yijia/service/impl/PosMachineServiceImpl.java
  19. 3 1
      YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/AesDecryptUtil.java
  20. 3 1
      YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/HttpRequestUtil.java
  21. 6 3
      YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/WeiXinUserUtil.java
  22. 2 1
      YijiaRestful/src/main/resources/application.yml
  23. 70 0
      YijiaRestful/src/main/resources/mapper/PosMachineMapper.xml

+ 6 - 0
YijiaRestful/pom.xml

@@ -21,6 +21,12 @@
 
     <dependencies>
 
+        <!-- spring security 安全认证 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+
         <!-- redis 缓存操作 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 4 - 1
YijiaRestful/src/main/java/com/platform/yijia/YijiaApplication.java

@@ -6,7 +6,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-@SpringBootApplication
+//@SpringBootApplication
+@SpringBootApplication(exclude = {
+        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
+})
 @EnableTransactionManagement
 @MapperScan("com.platform.yijia.dao")
 public class YijiaApplication {

+ 24 - 11
YijiaRestful/src/main/java/com/platform/yijia/controller/AppUserInfoController.java

@@ -29,7 +29,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class AppUserInfoController {
     private static Logger logger =(Logger) LoggerFactory.getLogger(AppUserInfoController.class);
     @Autowired
@@ -44,6 +44,8 @@ public class AppUserInfoController {
     private RedisCacheUtil redisCacheUtil;
     @Resource
     private WeiXinUserUtil weiXinUserUtil;
+    @Resource
+    private AesDecryptUtil aesDecryptUtil;
 
 //    String appId = "wxe1135cd390b38a54";        //微信小程序appID
 //    String appSecret = "0532c7d9ae876c4ad636df0b1e3b9ddb";      //微信小程序密钥
@@ -80,7 +82,7 @@ public class AppUserInfoController {
     @RequestMapping(value = "/decryptEncryptedData", method = RequestMethod.POST, consumes = "application/json")
     public String decryptEncryptedData(@RequestBody JSONObject jsonObject){
         logger.info("解密获取手机号前台传入参数:" +jsonObject.toString());
-        return AesDecryptUtil.decryptEncryptedData(jsonObject.get("encryptedData").toString(), jsonObject.get("sessionKey").toString(), jsonObject.get("iv").toString(), "UTF-8").toString();
+        return aesDecryptUtil.decryptEncryptedData(jsonObject.get("encryptedData").toString(), jsonObject.get("sessionKey").toString(), jsonObject.get("iv").toString(), "UTF-8").toString();
     }
 
     //获取UnionId信息
@@ -194,23 +196,16 @@ public class AppUserInfoController {
             //判断该用户是否已存在
             int count = appUserInfoService.isExistAppUser(params);
             if(count > 0){
-
                 //此处是为初期没使用unionid,以作更新前期用户unionId
-                boolean boo = customerPointsService.isExistCustomerPointsInfo(customerPoints);
-                if(!boo){
-                    customerPointsService.insertCustomerPointsInfo(customerPoints);
-                }
                 String userUnionId = appUserInfoService.getUserUnionId(appUserInfo);
                 if(!StringUtils.isNotBlank(userUnionId)){
                     appUserInfoService.updateUnionId(appUserInfo);
                 }
+                this.upDateCustomerPointsInfo(customerPoints, request);
                 resultData = ResultData.error(CodeMsg.USER_EXSIST);
             }else {
                 appUserInfoService.AddAppUserInfo(appUserInfo);
-                boolean boo = customerPointsService.isExistCustomerPointsInfo(customerPoints);
-                if(!boo){
-                    customerPointsService.insertCustomerPointsInfo(customerPoints);
-                }
+                this.upDateCustomerPointsInfo(customerPoints, request);
                 resultData = ResultData.success(CodeMsg.SUCCESS);
             }
         }catch (Exception e){
@@ -220,4 +215,22 @@ public class AppUserInfoController {
         return gson.toJson(resultData);
     }
 
+    //客户积分表信息操作
+    public void upDateCustomerPointsInfo(CustomerPoints customerPoints, AppUserInfoRequest request){
+        boolean boo = customerPointsService.isExistCustomerPointsInfo(customerPoints);
+        if(!boo){
+            customerPointsService.insertCustomerPointsInfo(customerPoints);
+        }else {
+            //此处用于:如果客户积分信息存在可能会出现小程序ID或者公众号ID没有的情况
+            CustomerPoints c = new CustomerPoints();
+            c.setUnionId(customerPoints.getUnionId());
+            c.setMinaOpenId(customerPoints.getMinaOpenId());
+            c.setBlogOpenId(customerPoints.getBlogOpenId());
+//            c.setStationId(request.getStationId());
+//            c.setStationName(request.getStationName());
+//            c.setMobilePhone(request.getMobilePhone());
+            customerPointsService.updateCustomerPointsInfo(c);
+        }
+    }
+
 }

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/CustomerGradeController.java

@@ -23,7 +23,7 @@ import java.util.Map;
  * 客户优惠和营销
  */
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class CustomerGradeController {
     private static Logger logger =(Logger) LoggerFactory.getLogger(CustomerGradeController.class);
     @Resource

+ 2 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/IntegralShoppingMallController.java

@@ -29,7 +29,7 @@ import java.util.*;
  * @Date 2021年2月24日
  */
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class IntegralShoppingMallController {
     private static Logger logger =(Logger) LoggerFactory.getLogger(IntegralShoppingMallController.class);
     @Resource
@@ -172,6 +172,7 @@ public class IntegralShoppingMallController {
                     //用户已消费积分累积
                     BigDecimal consumptionPoints = new BigDecimal(customerPointsInfo.getConsumptionPoints()).add(multiply);
                     customerPoints.setConsumptionPoints(Integer.valueOf(consumptionPoints.toString()));
+                    customerPoints.setRecentConsumptionDate(new Date());
                     logger.info("用户积分: "+ consumptionPoints.toString());
                     customerPointsService.updateCustomerPointsInfo(customerPoints);
 

+ 80 - 30
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -15,6 +15,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -24,7 +25,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class PayController {
     private static Logger logger =(Logger) LoggerFactory.getLogger(PayController.class);
     @Resource
@@ -211,8 +212,8 @@ public class PayController {
 
                     //reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
                     //reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
-                    reqData.put("notifyUrl", "https://www.huijy.net/api/getCallback"); //回调地址
-                    //reqData.put("notifyUrl", "https://www.huijy.net/demo/getCallback"); //回调地址
+                    //reqData.put("notifyUrl", "https://www.huijy.net/api/getCallback"); //回调地址
+                    reqData.put("notifyUrl", "https://www.huijy.net/demo/getCallback"); //回调地址
                     //reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
                     //reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
                     //reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
@@ -400,6 +401,7 @@ public class PayController {
      */
     @RequestMapping(value = "/getCallback", consumes = "application/json", method = RequestMethod.POST)
     @ResponseBody
+    @Transactional
     public void getCallback(@RequestBody JSONObject request){
         logger.info("-------------------------------回调开始----------------------------------------------");
         logger.info("回调返回过来的参数"+request);
@@ -661,7 +663,7 @@ public class PayController {
                                 logger.info("不存在客户 新增时参数: " + customerManage.toString());
                                 payOrderService.insertCustomer(customerManage);
                             }
-/*/==========================================================================================================================================================//
+//==========================================================================================================================================================//
                             //客户积分
                             IntegralRule integralRule  =new IntegralRule();
                             integralRule.setStationId(Integer.valueOf(infoMap.get("stationId").toString()));
@@ -675,6 +677,7 @@ public class PayController {
                             //获取该油站的积分规则
                             integralRule.setEmptyDate(new Date());
                             List<IntegralRule> rule = integralRuleService.getIntegralRule(integralRule);
+                            logger.info("当前油站油品的积分规则:" + rule);
                             if(rule !=null && rule.size() > 0 && rule.get(0).getEmptyDate().compareTo(new Date()) ==1){
                                 CustomerPoints customerPoints = new CustomerPoints();       //客户积分实体表
                                 CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();     //客户积分记录实体表
@@ -709,55 +712,79 @@ public class PayController {
                                     //String ruleType = rule.get(0).getRuleType();   //获取积分规则类型
                                     String[] datePicker={};     //积分比例时间
                                     if(rule.get(0).getDatePicker() != null && rule.get(0).getDatePicker() !=""){
-                                        datePicker = rule.get(0).getDatePicker().split(",");
+                                        if(rule.get(0).getDatePicker().contains(",")){
+                                            datePicker = rule.get(0).getDatePicker().split(",");
+                                        }else {
+                                            datePicker= new String[1];
+                                            datePicker[0] = rule.get(0).getDatePicker();
+                                        }
                                     }
                                     String currentTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
                                     List<IntegralRuleDetail> integralRuleDetailList = rule.get(0).getIntegralRuleDetailList();  //积分规则详细计算信息
                                     if(integralRuleDetailList !=null && integralRuleDetailList.size() > 0){
                                         BigDecimal realAmt = new BigDecimal(infoMap.get("amt").toString());  //本次消费实收金额
                                         BigDecimal receivableAmt = new BigDecimal(infoMap.get("receivableAmt").toString());  //本次消费实收金额
-                                        BigDecimal orderLiters = new BigDecimal(infoMap.get("orderLiters").toString());    //本次加油升数
+                                        BigDecimal orderLiters = null;  //本次加油升数
+                                        if(infoMap.containsKey("orderType") && infoMap.get("orderType").toString().equals("1")){
+                                            orderLiters = new BigDecimal(infoMap.get("orderLiters").toString());    //本次加油升数
+                                        }
                                         //循环规则明细
                                         for(IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
                                             if(integralRuleDetail.getOilType().equals("1")){    //油品
                                                 //规则类型
+                                                logger.info("当前生成积分类型:油品");
                                                 String ruleType = integralRuleDetail.getRuleType();
-                                                if(ruleType !=null && ruleType =="1" && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                logger.info("当前油品规则类型ruleType: " + ruleType);
+                                                if(ruleType !=null && ruleType.equals("1") && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1 || realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                                     //以实收金额为准时
+                                                    logger.info("以实收金额为准时");
                                                     if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
                                                         //计算积分并取整
+                                                        logger.info("油站使用等级");
                                                         countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }else {
                                                         //计算积分并取整
+                                                        logger.info("油站没有使用等级");
                                                         countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }
-                                                }else if(ruleType !=null && ruleType =="2" && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                }else if(ruleType !=null && ruleType.equals("2") && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1 || receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                                     //应收金额为准时
+                                                    logger.info("应收金额为准");
                                                     if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
                                                         //计算积分并取整
+                                                        logger.info("油站使用等级");
                                                         countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }else {
                                                         //计算积分并取整
+                                                        logger.info("油站没有使用等级");
                                                         countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }
 
-                                                }else if(ruleType !=null && ruleType =="3" && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                }else if(ruleType !=null && ruleType.equals("3") && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1 || orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                                     //加油升数为准时
+                                                    logger.info("加油升数为准");
                                                     if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
                                                         //计算积分并取整
+                                                        logger.info("油站使用等级");
                                                         countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }else {
                                                         //计算积分并取整
+                                                        logger.info("油站没有使用等级");
                                                         countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                         break;
                                                     }
+                                                }else {
+                                                    customerPoints.setPoints(customerPointsInfo.getPoints());
+                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints());
+                                                    customerPointsRecord.setIntegral(0);
                                                 }
                                             }else if(integralRuleDetail.getOilType().equals("2")){ //非油品
+                                                logger.info("当前生成积分类型:非油品");
                                                 //计算积分并取整
                                                 countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
                                                 break;
@@ -765,35 +792,24 @@ public class PayController {
                                         }
                                     }
 
+                                    logger.info("客户积分customerPoints:"+ customerPoints);
+                                    logger.info("客户积分记录customerPointsRecord:"+ customerPointsRecord);
                                     //更新客户余额积分
                                     customerPointsService.updateCustomerPointsInfo(customerPoints);
                                     //插入客户积分记录表
                                     customerPointsRecordService.insertCustomerPointsInfo(customerPointsRecord);
-
                                     //客户公众号积分增加通知
-                                    String gzhAppId ="";
-                                    String gzhAppSecret ="";
-                                    String stationName = "";        //油站名称
-                                    Map<String, String> m = stationService.getStationAppIdAndAppSecret(Integer.valueOf(infoMap.get("stationId").toString()));
-                                    if(m !=null && m.containsKey("stationName") && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
-                                        stationName = m.get("stationName");
-                                        gzhAppId = m.get("gzhAppId");
-                                        gzhAppSecret = m.get("gzhAppSecret");
-                                    }
-                                    List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
-                                    wxMpTemplate.add(new WxMpTemplateData("first","尊敬的"+infoMap.get("consumer").toString()+",您好:\n" + "您在"+stationName+"的积分最新交易信息如下"));
-                                    wxMpTemplate.add(new WxMpTemplateData("time", new SimpleDateFormat("yyyy年MM月dd日HH时mm分").format(new Date())));
-                                    wxMpTemplate.add(new WxMpTemplateData("type", "增加"));
-                                    wxMpTemplate.add(new WxMpTemplateData("Point", customerPointsRecord.getIntegral().toString()));
-                                    wxMpTemplate.add(new WxMpTemplateData("From", stationName));
-                                    wxMpTemplate.add(new WxMpTemplateData("remark",
-                                            "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的可用积分为 "+customerPoints.getPoints().toString()+" 分"));
-                                    String templateId = "G9tN--a3tGM5BN3otqZr73b4ErQCYWISSgyshbTqLYc";  //积分兑换成功通知模板
-                                    wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, customerPoints.getBlogOpenId(), wxMpTemplate);
+                                    //customerPoints.getBlogOpenId()
+                                    //weiXinPushIntegralInfo(infoMap.get("stationId").toString(), infoMap.get("consumer").toString(), customerPointsRecord.getIntegral().toString(), customerPoints.getPoints().toString(), customerPoints.getBlogOpenId());
+                                    this.weiXinPushIntegralInfo(infoMap.get("stationId").toString()
+                                            , infoMap.get("consumer").toString()
+                                            , customerPointsRecord.getIntegral().toString()
+                                            , customerPoints.getPoints().toString()
+                                            , "oJR5R6r4EJhaORFcPap70r_mtFZo");
                                 }
                             }
 
-*///========================================================================================================================================================//
+///========================================================================================================================================================//
                             //打印机打印小票
                             String content1;
                             String content2;
@@ -958,7 +974,9 @@ public class PayController {
                                 String[] datePicker, String currentTime, List<IntegralRule> rule,
                                 CustomerPoints customerPoints, CustomerPointsRecord customerPointsRecord, CustomerPoints customerPointsInfo){
         BigDecimal integral = b1.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
+        logger.info("该用户本次消费获取积分值:"+integral.toString());
         //设置积分多倍时间时
+        logger.info("积分双倍时间:" +datePicker);
         if(datePicker !=null){
             for(String str: datePicker){
                 if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
@@ -972,4 +990,36 @@ public class PayController {
         customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
     }
 
+    /*
+     * 微信公众号消息推送
+     * @param stationId 油站ID
+     * @param consumer  用户昵称
+     * @param customerPointsRecordIntegral  用户积分记录
+     * @param customerPointsIntegral        用户当前还剩余的积分
+     */
+    public void weiXinPushIntegralInfo (String stationId, String consumer, String customerPointsRecordIntegral, String customerPointsIntegral, String openId){
+        //客户公众号积分增加通知
+        String gzhAppId ="";
+        String gzhAppSecret ="";
+        String stationName = "";        //油站名称
+        Map<String, String> m = stationService.getStationAppIdAndAppSecret(Integer.valueOf(stationId));
+        if(m !=null && m.containsKey("stationName") && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
+            stationName = m.get("stationName");
+            gzhAppId = m.get("gzhAppId");
+            gzhAppSecret = m.get("gzhAppSecret");
+        }
+        List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
+        wxMpTemplate.add(new WxMpTemplateData("first","尊敬的"+consumer+",您好:\n" + "您在"+stationName+"的积分最新交易信息如下"));
+        wxMpTemplate.add(new WxMpTemplateData("time", new SimpleDateFormat("yyyy年MM月dd日HH时mm分").format(new Date())));
+        wxMpTemplate.add(new WxMpTemplateData("type", "增加"));
+        wxMpTemplate.add(new WxMpTemplateData("Point", customerPointsRecordIntegral));
+        wxMpTemplate.add(new WxMpTemplateData("From", stationName));
+        wxMpTemplate.add(new WxMpTemplateData("remark",
+                "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的可用积分为 "+customerPointsIntegral+" 分"));
+        String templateId = "G9tN--a3tGM5BN3otqZr73b4ErQCYWISSgyshbTqLYc";  //积分兑换成功通知模板
+        //wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, customerPoints.getBlogOpenId(), wxMpTemplate);
+        wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, openId, wxMpTemplate);  //oJR5R6r4EJhaORFcPap70r_mtFZo
+    }
+
+
 }

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

@@ -17,7 +17,7 @@ import javax.annotation.Resource;
 import java.util.List;
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class PayOrderController {
     private static Logger logger =(Logger) LoggerFactory.getLogger(PayOrderController.class);
     @Resource

+ 55 - 0
YijiaRestful/src/main/java/com/platform/yijia/controller/PosMachineController.java

@@ -0,0 +1,55 @@
+package com.platform.yijia.controller;
+import com.google.gson.Gson;
+import com.platform.yijia.param.request.LoginBody;
+import com.platform.yijia.pojo.SysUser;
+import com.platform.yijia.service.PosMachineService;
+import com.platform.yijia.utils.CodeMsg;
+import com.platform.yijia.utils.ResultData;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Controller;
+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.ResponseBody;
+
+import javax.annotation.Resource;
+
+/**
+ * <Title> PosMachineController </Title>
+ * <Description> POS机端控制层 </Description>
+ * @Author JK
+ * @Date 2021年3月17日
+ */
+
+@Controller
+@RequestMapping("/demo")
+public class PosMachineController {
+    @Resource
+    private PosMachineService posMachineService;
+
+    //POS机端用户登录
+    @RequestMapping(value = "/loginPosMachine", method = RequestMethod.POST)
+    @ResponseBody
+    public String loginPosMachine(@RequestBody LoginBody loginBody){
+
+        //Using generated security password: a78f4bd0-6087-4fff-ae5d-f2e4cd8c7961
+        Gson gson =new Gson();
+        //返回结果集
+        ResultData resultData = null;
+        if(loginBody.getUsername() !=null && loginBody.getPassword() !=null){
+            SysUser sysUser = posMachineService.selectUserByUserName(loginBody.getUsername());
+            if(sysUser !=null){
+                String password = sysUser.getPassword();
+                BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
+                //密码加密判断已加密密码是否与真实密码相同
+                boolean matches = bCryptPasswordEncoder.matches(loginBody.getPassword(), password);
+                if(matches){
+                    resultData = ResultData.success(CodeMsg.SUCCESS);
+                }
+            }else {
+                resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
+            }
+        }
+        return gson.toJson(resultData);
+    }
+}

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/StationClassStructureController.java

@@ -49,7 +49,7 @@ public class StationClassStructureController {
     @PostMapping("/posClassStructure")
     public Map posClassStructure (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
         //获取当前班结油
-        String stationName=stationClassStructure.getStationName();
+        //String stationName=stationClassStructure.getStationName();
         String username = stationClassStructure.getClassStructureMan();
         Integer stationId  =stationClassStructure.getStationId();
         Map map =new HashMap();

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/StationController.java

@@ -21,7 +21,7 @@ import javax.annotation.Resource;
 import java.util.List;
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class StationController {
     @Resource
     private StationService stationService;

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/SydDeptController.java

@@ -14,7 +14,7 @@ import javax.annotation.Resource;
 import java.util.List;
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class SydDeptController {
 
     @Resource

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/WXLoginController.java

@@ -28,7 +28,7 @@ import java.util.List;
  **/
 
 @Controller
-@RequestMapping("/api")
+@RequestMapping("/demo")
 public class WXLoginController {
 
     @Resource

+ 8 - 0
YijiaRestful/src/main/java/com/platform/yijia/dao/PosMachineMapper.java

@@ -0,0 +1,8 @@
+package com.platform.yijia.dao;
+
+import com.platform.yijia.pojo.SysUser;
+
+public interface PosMachineMapper {
+
+    SysUser selectUserByUserName(String userName);
+}

+ 29 - 0
YijiaRestful/src/main/java/com/platform/yijia/param/request/LoginBody.java

@@ -0,0 +1,29 @@
+package com.platform.yijia.param.request;
+
+import lombok.Data;
+
+/*
+ * 用户登录实体类参数
+ */
+@Data
+public class LoginBody {
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 用户密码
+     */
+    private String password;
+
+    /**
+     * 验证码
+     */
+    private String code;
+
+    /**
+     * 唯一标识
+     */
+    private String uuid = "";
+}

+ 52 - 0
YijiaRestful/src/main/java/com/platform/yijia/pojo/SysRole.java

@@ -0,0 +1,52 @@
+package com.platform.yijia.pojo;
+
+
+import lombok.Data;
+
+/**
+ * 角色表 sys_role
+ *
+ * @author yijia
+ */
+@Data
+public class SysRole
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 角色ID */
+    private Long roleId;
+
+    /** 角色名称 */
+    private String roleName;
+
+    /** 角色权限 */
+    private String roleKey;
+
+    /** 角色排序 */
+    private String roleSort;
+
+    /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限) */
+    private String dataScope;
+
+    /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
+    private boolean menuCheckStrictly;
+
+    /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */
+    private boolean deptCheckStrictly;
+
+    /** 角色状态(0正常 1停用) */
+    private String status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 用户是否存在此角色标识 默认不存在 */
+    private boolean flag = false;
+
+    /** 菜单组 */
+    private Long[] menuIds;
+
+    /** 部门组(数据权限) */
+    private Long[] deptIds;
+
+}

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/pojo/SysUser.java

@@ -629,4 +629,4 @@ public class SysUser {
     public void setRemark(String remark) {
         this.remark = remark == null ? null : remark.trim();
     }
-}
+}

+ 8 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/PosMachineService.java

@@ -0,0 +1,8 @@
+package com.platform.yijia.service;
+
+
+import com.platform.yijia.pojo.SysUser;
+
+public interface PosMachineService {
+    SysUser selectUserByUserName(String userName);
+}

+ 20 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/impl/PosMachineServiceImpl.java

@@ -0,0 +1,20 @@
+package com.platform.yijia.service.impl;
+
+import com.platform.yijia.dao.PosMachineMapper;
+import com.platform.yijia.pojo.SysUser;
+import com.platform.yijia.service.PosMachineService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+
+@Service("posMachineService")
+public class PosMachineServiceImpl implements PosMachineService {
+    @Resource
+    private PosMachineMapper posMachineMapper;
+
+    @Override
+    public SysUser selectUserByUserName(String userName) {
+        return posMachineMapper.selectUserByUserName(userName);
+    }
+}

+ 3 - 1
YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/AesDecryptUtil.java

@@ -7,6 +7,7 @@ import org.apache.commons.codec.binary.Base64;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 
 import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
@@ -24,6 +25,7 @@ import java.security.spec.InvalidParameterSpecException;
  * @author JK
  * @date 2019-11-12
  */
+@Component
 public class AesDecryptUtil {
 
     private static Logger logger =(Logger) LoggerFactory.getLogger(AesDecryptUtil.class);
@@ -40,7 +42,7 @@ public class AesDecryptUtil {
      * @param encodingFormat 解码后编码方式 像UTF-8等
      * @return 返回String类型字符串: new String(resultBytes, encodingFormat)
      */
-    public static JSONObject decryptEncryptedData(String encryptedData, String session_key, String iv, String encodingFormat){
+    public JSONObject decryptEncryptedData(String encryptedData, String session_key, String iv, String encodingFormat){
 
         //被加密的数据
         byte[] edBytes = Base64.decodeBase64(encryptedData.getBytes());

+ 3 - 1
YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/HttpRequestUtil.java

@@ -1,6 +1,7 @@
 package com.platform.yijia.utils.weixinapp;
 
 import net.sf.json.JSONObject;
+import org.springframework.stereotype.Component;
 
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
@@ -19,6 +20,7 @@ import java.security.SecureRandom;
  * @author JK
  * @date 2019年11月14日
  */
+@Component
 public class HttpRequestUtil {
     /*
      * 发送https请求
@@ -27,7 +29,7 @@ public class HttpRequestUtil {
      * @param outPutStr         //提交的数据
      * @return  jsonObject (通过JSONObject.get(key)的方式获取json的对象)
      */
-    public static JSONObject getHttpsRequestData(String requestUrl, String requestMethod, String outPutStr){
+    public JSONObject getHttpsRequestData(String requestUrl, String requestMethod, String outPutStr){
         JSONObject jsonObject = null;
         try {
             //创建SSLContext对象

+ 6 - 3
YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/WeiXinUserUtil.java

@@ -41,6 +41,9 @@ public class WeiXinUserUtil {
     @Resource
     private RedisCacheUtil redisCacheUtil;
 
+    @Resource
+    private HttpRequestUtil httpRequestUtil;
+
 
     /*
      * 获取UnionId信息
@@ -50,7 +53,7 @@ public class WeiXinUserUtil {
      */
     public  JSONObject getUnionIdInfo(String accessToken, String openId){
         String requestUrl = unionId_Url.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
-        JSONObject jsonObject = HttpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
+        JSONObject jsonObject = httpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
         logger.info("获取UnionId信息:" + jsonObject.toString());
         return jsonObject;
     }
@@ -68,7 +71,7 @@ public class WeiXinUserUtil {
         String requestUrl = openID_url.replace("APPID", appId).replace("APPSECRET", appSecret).replace("CODE", code);
         Map<String, Object> resultMap = new HashMap<>();
         //发起GET请求
-        JSONObject jsonObject = HttpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
+        JSONObject jsonObject = httpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
         logger.info("用户openid和session_key:" + jsonObject.toString());
         if(jsonObject != null && jsonObject.containsKey("openid")){
             resultMap.put("openid", jsonObject.getString("openid"));
@@ -93,7 +96,7 @@ public class WeiXinUserUtil {
         Token token = null;
         String requestUrl = token_url.replace("APPID", appId).replace("APPSECRET", appSecret);
         //发起GET请求获取凭证
-        JSONObject jsonObject = HttpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
+        JSONObject jsonObject = httpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
         System.out.println("getToken: "+jsonObject);
         if(jsonObject != null){
             try {

+ 2 - 1
YijiaRestful/src/main/resources/application.yml

@@ -12,7 +12,8 @@ server:
 # Spring配置
 spring:
     datasource:
-        url: jdbc:mysql://47.105.116.204:3306/jiaduoduo_db_test?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&serverTimezone=GMT%2b8&useSSL=true
+#        url: jdbc:mysql://47.105.116.204:3306/jiaduoduo_db?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&serverTimezone=GMT%2b8&useSSL=true
+        url: jdbc:mysql://47.105.116.204:3306/jiaduoduo_db_demo?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&serverTimezone=GMT%2b8&useSSL=true
         username: develop
         password: 1234.Abcd
         driver-class-name: com.mysql.cj.jdbc.Driver

+ 70 - 0
YijiaRestful/src/main/resources/mapper/PosMachineMapper.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.platform.yijia.dao.PosMachineMapper">
+
+    <resultMap type="com.platform.yijia.pojo.SysUser" id="SysUserResult">
+        <id     property="userId"       column="user_id"      />
+        <result property="deptId"       column="dept_id"      />
+        <result property="userName"     column="user_name"    />
+        <result property="nickName"     column="nick_name"    />
+        <result property="email"        column="email"        />
+        <result property="phonenumber"  column="phonenumber"  />
+        <result property="sex"          column="sex"          />
+        <result property="avatar"       column="avatar"       />
+        <result property="password"     column="password"     />
+        <result property="status"       column="status"       />
+        <result property="delFlag"      column="del_flag"     />
+        <result property="loginIp"      column="login_ip"     />
+        <result property="loginDate"    column="login_date"   />
+        <result property="createBy"     column="create_by"    />
+        <result property="createTime"   column="create_time"  />
+        <result property="updateBy"     column="update_by"    />
+        <result property="updateTime"   column="update_time"  />
+        <result property="remark"       column="remark"       />
+<!--        <association property="dept"    column="dept_id" resultMap="deptResult" />-->
+<!--        <collection  property="roles"   javaType="java.util.List"        resultMap="RoleResult" />-->
+    </resultMap>
+
+<!--    <resultMap id="deptResult" type="com.platform.yijia.pojo.SysDept">-->
+<!--        <id     property="deptId"   column="dept_id"     />-->
+<!--        <result property="parentId" column="parent_id"   />-->
+<!--        <result property="deptName" column="dept_name"   />-->
+<!--        <result property="orderNum" column="order_num"   />-->
+<!--        <result property="leader"   column="leader"      />-->
+<!--        <result property="status"   column="dept_status" />-->
+<!--    </resultMap>-->
+
+<!--    <resultMap id="RoleResult" type="com.platform.yijia.pojo.SysRole">-->
+<!--        <id     property="roleId"       column="role_id"        />-->
+<!--        <result property="roleName"     column="role_name"      />-->
+<!--        <result property="roleKey"      column="role_key"       />-->
+<!--        <result property="roleSort"     column="role_sort"      />-->
+<!--        <result property="dataScope"     column="data_scope"    />-->
+<!--        <result property="status"       column="role_status"    />-->
+<!--    </resultMap>-->
+
+    <sql id="selectUserVo">
+        SELECT
+            u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+            d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+            r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+        FROM sys_user u
+		    left join sys_dept d on u.dept_id = d.dept_id
+		    left join sys_user_role ur on u.user_id = ur.user_id
+		    left join sys_role r on r.role_id = ur.role_id
+    </sql>
+
+<!--    <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">-->
+<!--        <include refid="selectUserVo"/>-->
+<!--        where u.user_name = #{userName}-->
+<!--    </select>-->
+    <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
+        SELECT
+            u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber,
+            u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
+        FROM
+            sys_user AS u
+        WHERE
+            u.user_name = #{userName}
+    </select>
+</mapper>