Pārlūkot izejas kodu

调用随行付支付修改

jk-GitHub-coder 4 gadi atpakaļ
vecāks
revīzija
bf8c2e4ada

+ 82 - 2
YijiaRestful/src/main/java/com/platform/yijia/controller/ElectronicMembershipCardController.java

@@ -59,7 +59,72 @@ public class ElectronicMembershipCardController {
     //用户充值储蓄卡拉起随行付支付接口
     @RequestMapping(value = "/rechargeBalance", method = RequestMethod.POST)
     @ResponseBody
-    public String rechargeBalance(@RequestBody RechargeBalance rechargeBalance){
+    public String rechargeBalance(RechargeBalance rechargeBalance){
+        Gson gson =new Gson();
+        //返回结果集
+        ResultData resultData = null;
+        if(rechargeBalance !=null){
+            BigDecimal amt = new BigDecimal(rechargeBalance.getAmt());
+            String openId = rechargeBalance.getOpenId();    //公众号的openId
+            Integer stationId = rechargeBalance.getStationId();
+            BigDecimal presentAmt = new BigDecimal(rechargeBalance.getPresentAmt());
+            String customerName = rechargeBalance.getCustomerName();
+            String cardOilsType = rechargeBalance.getCardOilsType();
+            String unionId = rechargeBalance.getUnionId();
+            String stationName = rechargeBalance.getStationName();
+            //电子会员卡使用记录
+            CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
+            customerCardUseRecord.setUnionId(unionId);
+            customerCardUseRecord.setStationId(stationId);
+            customerCardUseRecord.setAmt(amt);
+            customerCardUseRecord.setPresentAmt(presentAmt);
+            customerCardUseRecord.setCardOilsType(cardOilsType);
+            customerCardUseRecord.setStationName(stationName);
+            customerCardUseRecord.setCustomerName(customerName);
+            customerCardUseRecord.setUsageType("+");
+            customerCardUseRecord.setType("1");      //1表示微信
+            customerCardUseRecord.setCreateTime(new Date());
+            customerCardUseRecord.setStatus("0");
+            //订单规则 时间+6位随机数
+            Random random = new Random();
+            String str="";
+            for(int i=0; i<6; i++){
+                str+=random.nextInt(10);
+            }
+            String orderNo = System.nanoTime()+str;
+            customerCardUseRecord.setOrderNo(orderNo);
+
+            //电子会员卡
+            CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
+//            customerElectronicCard.setUnionId(unionId);
+//            customerElectronicCard.setStationId(stationId);
+//            customerElectronicCard.setCardOilsType(cardOilsType);
+            customerElectronicCard.setId(rechargeBalance.getId());
+            customerElectronicCard.setRecentlyTime(new Date());
+
+            //获取当前用户要充值的的电子会员卡信息
+            CustomerElectronicCard electronicCardInfo = electronicMembershipCardService.getElectronicCardInfo(customerElectronicCard);
+            if(electronicCardInfo != null){
+                BigDecimal amtBalance = electronicCardInfo.getAmt();        //用户当前卡内余额
+                if(presentAmt !=null){  //有赠送金额时
+                    customerElectronicCard.setAmt(amtBalance.add(presentAmt).add(amt));
+                }else { //无赠送金额时
+                    customerElectronicCard.setAmt(amtBalance.add(amt));
+                }
+                electronicMembershipCardService.updateElectronicCardInfo(customerElectronicCard);   //更新电子会员看余额信息
+                electronicMembershipCardService.insetCardUseRecord(customerCardUseRecord);      //插入电子会员卡的使用记录
+                resultData = ResultData.success(orderNo);
+            }else {
+                resultData = ResultData.error(CodeMsg.USER_EXSIST_CARD);
+            }
+        }
+        return gson.toJson(resultData);
+    }
+
+    //用户充值储蓄卡拉起随行付支付接口
+    @RequestMapping(value = "/rechargeBalanceSXFPay", method = RequestMethod.POST)
+    @ResponseBody
+    public String rechargeBalanceSXFPay(@RequestBody RechargeBalance rechargeBalance){
         Gson gson =new Gson();
         //返回结果集
         ResultData resultData = null;
@@ -289,10 +354,25 @@ public class ElectronicMembershipCardController {
         HashMap<String, Object> result = JSON.parseObject(gson.toJson(reqData), LinkedHashMap.class, Feature.OrderedField);
         //验签
         String resultStr = RSASignature.getOrderContent(result);
-        JSONObject req = new JSONObject();
+        //JSONObject req = new JSONObject();
         System.out.println(resultStr);
         if (RSASignature.doCheck(resultStr, sign, SXFPaySign.sxfPublic)) {
             logger.info("验签成功");
+            //随行付回调验签成功更新客户电子卡余额 和 更新客户充值记录状态
+            CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
+            customerCardUseRecord.setOrderNo(ordNo);
+            CustomerCardUseRecord customerCardUseRecordInfo = electronicMembershipCardService.getCardRecordByOrderNo(customerCardUseRecord);
+            // 0表示未支付  1表示已支付
+            if(customerCardUseRecordInfo !=null && customerCardUseRecordInfo.getStatus().equals("0")){
+                CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
+                customerElectronicCard.setUnionId(customerCardUseRecord.getUnionId());
+                customerElectronicCard.setAmt(new BigDecimal(amt));
+                customerElectronicCard.setRecentlyTime(new Date());
+                electronicMembershipCardService.updateElectronicCardInfo(customerElectronicCard);
+                customerCardUseRecord.setStatus("1");
+                electronicMembershipCardService.updateCardRecordStatusByOrderNo(customerCardUseRecord);
+                logger.info("=====================电子会员卡充值成功=============================");
+            }
         }else {
             logger.info("验签失败");
         }

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

@@ -182,7 +182,7 @@ public class IntegralShoppingMallController {
             if(customerPointsInfo !=null){
                 IntegralWares integralWaresInfo = integralWaresService.getIntegralWaresInfo(integralWares);
                 //防止前台抓包修改价格做商品价格校验判断
-                if(integralWaresInfo.getSaleIntegral().equals(new BigDecimal(request.getIntegral()))){
+                if(new BigDecimal(integralWaresInfo.getSaleIntegral().intValue()).equals(new BigDecimal(request.getIntegral()))){
                     BigDecimal multiply = new BigDecimal(request.getIntegral()).multiply(new BigDecimal(request.getExchangeNum())); //该订单总积分
                     orderSumIntegral = multiply.toString();
                     //用户剩余积分且大于订单积分

+ 9 - 0
YijiaRestful/src/main/java/com/platform/yijia/dao/ElectronicMembershipCardMapper.java

@@ -23,4 +23,13 @@ public interface ElectronicMembershipCardMapper {
     //新增电子会员卡使用记录
     void insetCardUseRecord(CustomerCardUseRecord customerCardUseRecord);
 
+    //根据订单号查询电子会员卡的充值记录信息
+    CustomerCardUseRecord getCardRecordByOrderNo(CustomerCardUseRecord customerCardUseRecord);
+
+    //根据unionId更新客户余额
+    void updateElectronicCardInfoByUnionId(CustomerElectronicCard customerElectronicCard);
+
+    //根据订单号更新用户充值记录的状态
+    void updateCardRecordStatusByOrderNo(CustomerCardUseRecord customerCardUseRecord);
+
 }

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

@@ -22,4 +22,5 @@ public class CustomerCardUseRecord {
     private Date createTime;            //'记录时间'
     private Integer stationId;      //'油站ID'
     private String stationName;     //'油站名称'
+    private String status;     //'油站名称'
 }

+ 9 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/ElectronicMembershipCardService.java

@@ -22,4 +22,13 @@ public interface ElectronicMembershipCardService {
     //新增电子会员卡使用记录
     void insetCardUseRecord(CustomerCardUseRecord customerCardUseRecord);
 
+    //根据订单号查询电子会员卡的充值记录信息
+    CustomerCardUseRecord getCardRecordByOrderNo(CustomerCardUseRecord customerCardUseRecord);
+
+    //根据unionId更新客户余额
+    void updateElectronicCardInfoByUnionId(CustomerElectronicCard customerElectronicCard);
+
+    //根据订单号更新用户充值记录的状态
+    void updateCardRecordStatusByOrderNo(CustomerCardUseRecord customerCardUseRecord);
+
 }

+ 18 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/impl/ElectronicMembershipCardServiceImpl.java

@@ -17,6 +17,24 @@ public class ElectronicMembershipCardServiceImpl implements ElectronicMembership
     @Resource
     private ElectronicMembershipCardMapper electronicMembershipCardMapper;
 
+    //根据unionId更新客户余额
+    @Override
+    public void updateElectronicCardInfoByUnionId(CustomerElectronicCard customerElectronicCard) {
+        electronicMembershipCardMapper.updateElectronicCardInfoByUnionId(customerElectronicCard);
+    }
+
+    //根据订单号查询用户的充值记录
+    @Override
+    public CustomerCardUseRecord getCardRecordByOrderNo(CustomerCardUseRecord customerCardUseRecord) {
+        return electronicMembershipCardMapper.getCardRecordByOrderNo(customerCardUseRecord);
+    }
+
+    //根据订单号更新客户充值记录
+    @Override
+    public void updateCardRecordStatusByOrderNo(CustomerCardUseRecord customerCardUseRecord) {
+        electronicMembershipCardMapper.updateCardRecordStatusByOrderNo(customerCardUseRecord);
+    }
+
     //获取用户储蓄卡的使用记录
     @Override
     public List<CustomerCardUseRecord> getCardUseRecordList(CustomerCardUseRecord customerCardUseRecord) {

+ 71 - 2
YijiaRestful/src/main/resources/mapper/ElectronicMembershipCardMapper.xml

@@ -30,8 +30,50 @@
         <result column="create_time"           jdbcType="TIMESTAMP" property="createTime" />
         <result column="station_id"            jdbcType="INTEGER"   property="stationId" />
         <result column="station_name"          jdbcType="VARCHAR"   property="stationName" />
+        <result column="status"               jdbcType="VARCHAR"   property="status" />
     </resultMap>
 
+    <!--查询客户充值的订单信息-->
+    <select id="getCardRecordByOrderNo" parameterType="com.platform.yijia.pojo.CustomerCardUseRecord" resultMap="CardRecordBaseResultMap">
+        SELECT
+            id,
+            order_no,
+            union_id,
+            customer_name,
+            usage_type,
+            type,
+            card_oils_type,
+            amt,
+            present_amt,
+            create_time,
+            station_id,
+            station_name,
+            status
+        FROM
+            customer_card_use_record
+        <where>
+            <if test=" orderNo !=null and orderNo !=''">
+                order_no = #{orderNo}
+            </if>
+        </where>
+    </select>
+
+    <!--根据订单号更新用户充值记录的状态-->
+    <update id="updateCardRecordStatusByOrderNo" parameterType="com.platform.yijia.pojo.CustomerElectronicCard">
+        UPDATE
+        customer_card_use_record
+        <set>
+            <if test="status !=null">
+                status = #{status}
+            </if>
+        </set>
+        <where>
+            <if test=" orderNo !=null and orderNo !=''">
+                order_no = #{orderNo}
+            </if>
+        </where>
+    </update>
+
     <!--插入用户电子会员卡的使用记录-->
     <insert id="insetCardUseRecord" parameterType="com.platform.yijia.pojo.CustomerCardUseRecord">
         INSERT INTO customer_card_use_record
@@ -69,6 +111,9 @@
             <if test="stationName !=null">
                 station_name,
             </if>
+            <if test="status !=null">
+                status,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderNo !=null">
@@ -104,6 +149,9 @@
             <if test="stationName !=null">
                 #{stationName},
             </if>
+            <if test="status !=null">
+                #{status},
+            </if>
         </trim>
     </insert>
 
@@ -121,12 +169,14 @@
             present_amt,
             create_time,
             station_id,
-            station_name
+            station_name,
+            status
          FROM
             customer_card_use_record
         <where>
+                status ="1"
             <if test=" usageType !=null and usageType !=''">
-                usage_type = #{usageType}
+                AND usage_type = #{usageType}
             </if>
             <if test="stationId !=null and stationId !=''">
                 AND station_id = #{stationId}
@@ -209,4 +259,23 @@
             </if>
         </where>
     </update>
+
+    <!--根据unionId更新用户的电子会员卡的信息-->
+    <update id="updateElectronicCardInfoByUnionId" parameterType="com.platform.yijia.pojo.CustomerElectronicCard">
+        UPDATE
+        customer_electronic_card
+        <set>
+            <if test="amt !=null">
+                amt = #{amt},
+            </if>
+            <if test="recentlyTime !=null">
+                recently_time = #{recentlyTime}
+            </if>
+        </set>
+        <where>
+            <if test="unionId !=null and unionId != ''">
+                union_id = #{unionId}
+            </if>
+        </where>
+    </update>
 </mapper>