dev-discount
胡锐 4 years ago
commit 3340ea1beb
  1. 1
      hai-bweb/src/main/java/com/bweb/config/AuthConfig.java
  2. 167
      hai-bweb/src/main/java/com/bweb/controller/TelApiController.java
  3. 128
      hai-service/src/main/java/com/hai/dao/HighTelOrderMapper.java
  4. 7
      hai-service/src/main/java/com/hai/dao/HighTelOrderMapperExt.java
  5. 346
      hai-service/src/main/java/com/hai/dao/HighTelOrderSqlProvider.java
  6. 257
      hai-service/src/main/java/com/hai/entity/HighTelOrder.java
  7. 1073
      hai-service/src/main/java/com/hai/entity/HighTelOrderExample.java
  8. 61
      hai-service/src/main/java/com/hai/service/TelApiService.java
  9. 75
      hai-service/src/main/java/com/hai/service/impl/TelApiServiceImpl.java

@ -93,6 +93,7 @@ public class AuthConfig implements WebMvcConfigurer {
.excludePathPatterns("/login/logout") .excludePathPatterns("/login/logout")
.excludePathPatterns("/common/*") .excludePathPatterns("/common/*")
.excludePathPatterns("/sms/*") .excludePathPatterns("/sms/*")
.excludePathPatterns("/telApi/*")
.excludePathPatterns("/cmsContent/get*") .excludePathPatterns("/cmsContent/get*")
; ;
} }

@ -0,0 +1,167 @@
package com.bweb.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.pay.util.IOUtil;
import com.hai.common.pay.util.XmlUtil;
import com.hai.common.utils.*;
import com.hai.entity.HighDiscount;
import com.hai.entity.HighTelOrder;
import com.hai.model.ResponseData;
import com.hai.service.TelApiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.regex.Pattern;
@RestController
@RequestMapping(value = "/telApi")
@Api(value = "电话费充值数据接口")
public class TelApiController {
private static Logger log = LoggerFactory.getLogger(TelApiController.class);
@Resource
private TelApiService telApiService;
/**
* 中国电信号码格式验证 手机段 133,153,180,181,189,177,1700,173,199
**/
private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|73|99|8[019])\\d{8}$)|(^1700\\d{7}$)";
/**
* 中国联通号码格式验证 手机段130,131,132,155,156,185,186,145,176,1709
**/
private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
/**
* 中国移动号码格式验证
* 手机段134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
**/
private static final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
@RequestMapping(value = "/telPay", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "充值话费")
public ResponseData certification(@RequestBody HighTelOrder highTelOrder) {
try {
if (StringUtils.isBlank(highTelOrder.getTel()) ||
highTelOrder.getPrice() == null
) {
log.error("telApi -> telPay() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
int random = (int) (1 + Math.random() * (999999 - 100000 + 1));
Map<String, Object> map = new HashMap<>();
String mchid = "HFb44f8_10004";
String tel = highTelOrder.getTel();
String orderid = "HF" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5);
BigDecimal price = BigDecimal.valueOf(highTelOrder.getPrice());
String teltype = isChinaMobilePhoneNum(highTelOrder.getTel()).toString();
int timeout = 300;
String notify = "notify";
String time = String.valueOf(new Date().getTime());
String APIKEY = "483e5a68fe9bda2f7ab3f2665a0006cd";
String sign = mchid + tel + price + orderid + teltype + notify + time + random + APIKEY;
String param = "mchid=" + mchid +
"&tel=" + tel +
"&orderid=" + orderid +
"&price=" + price +
"&teltype=" + teltype +
"&notify=" + notify +
"&time=" + time +
"&rand=" + random +
"&sign=" + MD5Util.encode(sign.getBytes());
map.put("from", param);
JSONObject object = HttpsUtils.doSmsPost("http://45.130.154.125:9998/api/telpay", map, new HashMap<>());
return ResponseMsgUtil.success(object);
} catch (Exception e) {
log.error("HighMerchantController -> insertMerchant() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/notify", method = RequestMethod.POST)
@ApiOperation(value = "话费充值 -> 异步回调")
public void wechatNotify(HttpServletRequest request, HttpServletResponse response) {
try {
log.info("话费充值 -> 异步通知:处理开始");
String notifyXml = null; // 话费充值系统发送的数据(<![CDATA[product_001]]>格式)
notifyXml = IOUtil.inputStreamToString(request.getInputStream(), "UTF-8");
log.info("话费充值系统发送的数据:" + notifyXml);
SortedMap<String, String> map = XmlUtil.parseXmlToTreeMap(notifyXml, "UTF-8");
// resXml = notifyService.wechatNotify(map);
//
//
// BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
// out.write(resXml.getBytes());
// out.flush();
// out.close();
log.info("话费充值 -> 异步通知:处理完成");
} catch (Exception e) {
log.error("WechatPayController --> wechatNotify() error!", e);
}
}
/**
* 查询电话属于哪个运营商
*
* @param tel 手机号码
* @return 0不属于任何一个运营商0:移动1联通2电信 99: 什么都不是
*/
public Integer isChinaMobilePhoneNum(String tel) {
boolean b1 = tel != null && !tel.trim().equals("") && match(CHINA_MOBILE_PATTERN, tel);
if (b1) {
return 0;
}
b1 = tel != null && !tel.trim().equals("") && match(CHINA_UNICOM_PATTERN, tel);
if (b1) {
return 1;
}
b1 = tel != null && !tel.trim().equals("") && match(CHINA_TELECOM_PATTERN, tel);
if (b1) {
return 2;
}
return 99;
}
/**
* 匹配函数
*
* @param regex
* @param tel
* @return
*/
private static boolean match(String regex, String tel) {
return Pattern.matches(regex, tel);
}
}

@ -0,0 +1,128 @@
package com.hai.dao;
import com.hai.entity.HighTelOrder;
import com.hai.entity.HighTelOrderExample;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.type.JdbcType;
import org.springframework.stereotype.Repository;
/**
*
* 代码由工具生成,请勿修改!!!
* 如果需要扩展请在其父类进行扩展
*
**/
@Repository
public interface HighTelOrderMapper extends HighTelOrderMapperExt {
@SelectProvider(type=HighTelOrderSqlProvider.class, method="countByExample")
long countByExample(HighTelOrderExample example);
@DeleteProvider(type=HighTelOrderSqlProvider.class, method="deleteByExample")
int deleteByExample(HighTelOrderExample example);
@Delete({
"delete from high_tel_order",
"where id = #{id,jdbcType=INTEGER}"
})
int deleteByPrimaryKey(Integer id);
@Insert({
"insert into high_tel_order (order_id, out_order_id, ",
"mchid, tel, price, ",
"`status`, pay_time, ",
"create_time, update_time, ",
"ext_1, ext_2, ext_3)",
"values (#{orderId,jdbcType=VARCHAR}, #{outOrderId,jdbcType=VARCHAR}, ",
"#{mchid,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, ",
"#{status,jdbcType=INTEGER}, #{payTime,jdbcType=TIMESTAMP}, ",
"#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
})
@Options(useGeneratedKeys=true,keyProperty="id")
int insert(HighTelOrder record);
@InsertProvider(type=HighTelOrderSqlProvider.class, method="insertSelective")
@Options(useGeneratedKeys=true,keyProperty="id")
int insertSelective(HighTelOrder record);
@SelectProvider(type=HighTelOrderSqlProvider.class, method="selectByExample")
@Results({
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="order_id", property="orderId", jdbcType=JdbcType.VARCHAR),
@Result(column="out_order_id", property="outOrderId", jdbcType=JdbcType.VARCHAR),
@Result(column="mchid", property="mchid", jdbcType=JdbcType.VARCHAR),
@Result(column="tel", property="tel", jdbcType=JdbcType.VARCHAR),
@Result(column="price", property="price", jdbcType=JdbcType.DECIMAL),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
})
List<HighTelOrder> selectByExample(HighTelOrderExample example);
@Select({
"select",
"id, order_id, out_order_id, mchid, tel, price, `status`, pay_time, create_time, ",
"update_time, ext_1, ext_2, ext_3",
"from high_tel_order",
"where id = #{id,jdbcType=INTEGER}"
})
@Results({
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="order_id", property="orderId", jdbcType=JdbcType.VARCHAR),
@Result(column="out_order_id", property="outOrderId", jdbcType=JdbcType.VARCHAR),
@Result(column="mchid", property="mchid", jdbcType=JdbcType.VARCHAR),
@Result(column="tel", property="tel", jdbcType=JdbcType.VARCHAR),
@Result(column="price", property="price", jdbcType=JdbcType.DECIMAL),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
})
HighTelOrder selectByPrimaryKey(Integer id);
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByExampleSelective")
int updateByExampleSelective(@Param("record") HighTelOrder record, @Param("example") HighTelOrderExample example);
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByExample")
int updateByExample(@Param("record") HighTelOrder record, @Param("example") HighTelOrderExample example);
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByPrimaryKeySelective")
int updateByPrimaryKeySelective(HighTelOrder record);
@Update({
"update high_tel_order",
"set order_id = #{orderId,jdbcType=VARCHAR},",
"out_order_id = #{outOrderId,jdbcType=VARCHAR},",
"mchid = #{mchid,jdbcType=VARCHAR},",
"tel = #{tel,jdbcType=VARCHAR},",
"price = #{price,jdbcType=DECIMAL},",
"`status` = #{status,jdbcType=INTEGER},",
"pay_time = #{payTime,jdbcType=TIMESTAMP},",
"create_time = #{createTime,jdbcType=TIMESTAMP},",
"update_time = #{updateTime,jdbcType=TIMESTAMP},",
"ext_1 = #{ext1,jdbcType=VARCHAR},",
"ext_2 = #{ext2,jdbcType=VARCHAR},",
"ext_3 = #{ext3,jdbcType=VARCHAR}",
"where id = #{id,jdbcType=INTEGER}"
})
int updateByPrimaryKey(HighTelOrder record);
}

@ -0,0 +1,7 @@
package com.hai.dao;
/**
* mapper扩展类
*/
public interface HighTelOrderMapperExt {
}

@ -0,0 +1,346 @@
package com.hai.dao;
import com.hai.entity.HighTelOrder;
import com.hai.entity.HighTelOrderExample.Criteria;
import com.hai.entity.HighTelOrderExample.Criterion;
import com.hai.entity.HighTelOrderExample;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.jdbc.SQL;
public class HighTelOrderSqlProvider {
public String countByExample(HighTelOrderExample example) {
SQL sql = new SQL();
sql.SELECT("count(*)").FROM("high_tel_order");
applyWhere(sql, example, false);
return sql.toString();
}
public String deleteByExample(HighTelOrderExample example) {
SQL sql = new SQL();
sql.DELETE_FROM("high_tel_order");
applyWhere(sql, example, false);
return sql.toString();
}
public String insertSelective(HighTelOrder record) {
SQL sql = new SQL();
sql.INSERT_INTO("high_tel_order");
if (record.getOrderId() != null) {
sql.VALUES("order_id", "#{orderId,jdbcType=VARCHAR}");
}
if (record.getOutOrderId() != null) {
sql.VALUES("out_order_id", "#{outOrderId,jdbcType=VARCHAR}");
}
if (record.getMchid() != null) {
sql.VALUES("mchid", "#{mchid,jdbcType=VARCHAR}");
}
if (record.getTel() != null) {
sql.VALUES("tel", "#{tel,jdbcType=VARCHAR}");
}
if (record.getPrice() != null) {
sql.VALUES("price", "#{price,jdbcType=DECIMAL}");
}
if (record.getStatus() != null) {
sql.VALUES("`status`", "#{status,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}");
}
if (record.getCreateTime() != null) {
sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}");
}
if (record.getUpdateTime() != null) {
sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExt1() != null) {
sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}");
}
if (record.getExt2() != null) {
sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}");
}
if (record.getExt3() != null) {
sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}");
}
return sql.toString();
}
public String selectByExample(HighTelOrderExample example) {
SQL sql = new SQL();
if (example != null && example.isDistinct()) {
sql.SELECT_DISTINCT("id");
} else {
sql.SELECT("id");
}
sql.SELECT("order_id");
sql.SELECT("out_order_id");
sql.SELECT("mchid");
sql.SELECT("tel");
sql.SELECT("price");
sql.SELECT("`status`");
sql.SELECT("pay_time");
sql.SELECT("create_time");
sql.SELECT("update_time");
sql.SELECT("ext_1");
sql.SELECT("ext_2");
sql.SELECT("ext_3");
sql.FROM("high_tel_order");
applyWhere(sql, example, false);
if (example != null && example.getOrderByClause() != null) {
sql.ORDER_BY(example.getOrderByClause());
}
return sql.toString();
}
public String updateByExampleSelective(Map<String, Object> parameter) {
HighTelOrder record = (HighTelOrder) parameter.get("record");
HighTelOrderExample example = (HighTelOrderExample) parameter.get("example");
SQL sql = new SQL();
sql.UPDATE("high_tel_order");
if (record.getId() != null) {
sql.SET("id = #{record.id,jdbcType=INTEGER}");
}
if (record.getOrderId() != null) {
sql.SET("order_id = #{record.orderId,jdbcType=VARCHAR}");
}
if (record.getOutOrderId() != null) {
sql.SET("out_order_id = #{record.outOrderId,jdbcType=VARCHAR}");
}
if (record.getMchid() != null) {
sql.SET("mchid = #{record.mchid,jdbcType=VARCHAR}");
}
if (record.getTel() != null) {
sql.SET("tel = #{record.tel,jdbcType=VARCHAR}");
}
if (record.getPrice() != null) {
sql.SET("price = #{record.price,jdbcType=DECIMAL}");
}
if (record.getStatus() != null) {
sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
}
if (record.getCreateTime() != null) {
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
}
if (record.getUpdateTime() != null) {
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExt1() != null) {
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
}
if (record.getExt2() != null) {
sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
}
if (record.getExt3() != null) {
sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
}
applyWhere(sql, example, true);
return sql.toString();
}
public String updateByExample(Map<String, Object> parameter) {
SQL sql = new SQL();
sql.UPDATE("high_tel_order");
sql.SET("id = #{record.id,jdbcType=INTEGER}");
sql.SET("order_id = #{record.orderId,jdbcType=VARCHAR}");
sql.SET("out_order_id = #{record.outOrderId,jdbcType=VARCHAR}");
sql.SET("mchid = #{record.mchid,jdbcType=VARCHAR}");
sql.SET("tel = #{record.tel,jdbcType=VARCHAR}");
sql.SET("price = #{record.price,jdbcType=DECIMAL}");
sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
HighTelOrderExample example = (HighTelOrderExample) parameter.get("example");
applyWhere(sql, example, true);
return sql.toString();
}
public String updateByPrimaryKeySelective(HighTelOrder record) {
SQL sql = new SQL();
sql.UPDATE("high_tel_order");
if (record.getOrderId() != null) {
sql.SET("order_id = #{orderId,jdbcType=VARCHAR}");
}
if (record.getOutOrderId() != null) {
sql.SET("out_order_id = #{outOrderId,jdbcType=VARCHAR}");
}
if (record.getMchid() != null) {
sql.SET("mchid = #{mchid,jdbcType=VARCHAR}");
}
if (record.getTel() != null) {
sql.SET("tel = #{tel,jdbcType=VARCHAR}");
}
if (record.getPrice() != null) {
sql.SET("price = #{price,jdbcType=DECIMAL}");
}
if (record.getStatus() != null) {
sql.SET("`status` = #{status,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}");
}
if (record.getCreateTime() != null) {
sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}");
}
if (record.getUpdateTime() != null) {
sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExt1() != null) {
sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}");
}
if (record.getExt2() != null) {
sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}");
}
if (record.getExt3() != null) {
sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}");
}
sql.WHERE("id = #{id,jdbcType=INTEGER}");
return sql.toString();
}
protected void applyWhere(SQL sql, HighTelOrderExample example, boolean includeExamplePhrase) {
if (example == null) {
return;
}
String parmPhrase1;
String parmPhrase1_th;
String parmPhrase2;
String parmPhrase2_th;
String parmPhrase3;
String parmPhrase3_th;
if (includeExamplePhrase) {
parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}";
parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";
parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";
parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
} else {
parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}";
parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";
parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}";
parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
}
StringBuilder sb = new StringBuilder();
List<Criteria> oredCriteria = example.getOredCriteria();
boolean firstCriteria = true;
for (int i = 0; i < oredCriteria.size(); i++) {
Criteria criteria = oredCriteria.get(i);
if (criteria.isValid()) {
if (firstCriteria) {
firstCriteria = false;
} else {
sb.append(" or ");
}
sb.append('(');
List<Criterion> criterions = criteria.getAllCriteria();
boolean firstCriterion = true;
for (int j = 0; j < criterions.size(); j++) {
Criterion criterion = criterions.get(j);
if (firstCriterion) {
firstCriterion = false;
} else {
sb.append(" and ");
}
if (criterion.isNoValue()) {
sb.append(criterion.getCondition());
} else if (criterion.isSingleValue()) {
if (criterion.getTypeHandler() == null) {
sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j));
} else {
sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler()));
}
} else if (criterion.isBetweenValue()) {
if (criterion.getTypeHandler() == null) {
sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j));
} else {
sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler()));
}
} else if (criterion.isListValue()) {
sb.append(criterion.getCondition());
sb.append(" (");
List<?> listItems = (List<?>) criterion.getValue();
boolean comma = false;
for (int k = 0; k < listItems.size(); k++) {
if (comma) {
sb.append(", ");
} else {
comma = true;
}
if (criterion.getTypeHandler() == null) {
sb.append(String.format(parmPhrase3, i, j, k));
} else {
sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler()));
}
}
sb.append(')');
}
}
sb.append(')');
}
}
if (sb.length() > 0) {
sql.WHERE(sb.toString());
}
}
}

@ -0,0 +1,257 @@
package com.hai.entity;
import java.io.Serializable;
import java.util.Date;
/**
* high_tel_order
* @author
*/
/**
*
* 代码由工具生成
*
**/
public class HighTelOrder implements Serializable {
/**
* 主键ID
*/
private Integer id;
/**
* 充值订单ID
*/
private String orderId;
/**
* 官方订单号
*/
private String outOrderId;
/**
* 商户ID
*/
private String mchid;
/**
* 充值手机号码
*/
private String tel;
/**
* 充值金额
*/
private Long price;
/**
* 交易结果(1 未支付 2 支付中 3.已支付 4.支付失败
*/
private Integer status;
/**
* 支付时间
*/
private Date payTime;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* ext_1
*/
private String ext1;
/**
* ext_2
*/
private String ext2;
/**
* ext_3
*/
private String ext3;
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getOutOrderId() {
return outOrderId;
}
public void setOutOrderId(String outOrderId) {
this.outOrderId = outOrderId;
}
public String getMchid() {
return mchid;
}
public void setMchid(String mchid) {
this.mchid = mchid;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getExt1() {
return ext1;
}
public void setExt1(String ext1) {
this.ext1 = ext1;
}
public String getExt2() {
return ext2;
}
public void setExt2(String ext2) {
this.ext2 = ext2;
}
public String getExt3() {
return ext3;
}
public void setExt3(String ext3) {
this.ext3 = ext3;
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
HighTelOrder other = (HighTelOrder) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))
&& (this.getOutOrderId() == null ? other.getOutOrderId() == null : this.getOutOrderId().equals(other.getOutOrderId()))
&& (this.getMchid() == null ? other.getMchid() == null : this.getMchid().equals(other.getMchid()))
&& (this.getTel() == null ? other.getTel() == null : this.getTel().equals(other.getTel()))
&& (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
&& (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
&& (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2()))
&& (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());
result = prime * result + ((getOutOrderId() == null) ? 0 : getOutOrderId().hashCode());
result = prime * result + ((getMchid() == null) ? 0 : getMchid().hashCode());
result = prime * result + ((getTel() == null) ? 0 : getTel().hashCode());
result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode());
result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode());
return result;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", orderId=").append(orderId);
sb.append(", outOrderId=").append(outOrderId);
sb.append(", mchid=").append(mchid);
sb.append(", tel=").append(tel);
sb.append(", price=").append(price);
sb.append(", status=").append(status);
sb.append(", payTime=").append(payTime);
sb.append(", createTime=").append(createTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", ext1=").append(ext1);
sb.append(", ext2=").append(ext2);
sb.append(", ext3=").append(ext3);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}

@ -0,0 +1,61 @@
package com.hai.service;
import com.hai.entity.HighTelOrder;
import java.util.List;
import java.util.Map;
/**
* @ClassName TelApiService.java
* @author Sum1Dream
* @version 1.0.0
* @Description //话费充值管理
* @createTime 14:17 2021/5/28
**/
public interface TelApiService {
/**
* @Author Sum1Dream
* @Description // 查询话费订单列表
* @Date 11:33 2021/5/28
* @Param [map]
* @return java.util.List<com.hai.entity.HighTelOrder>
**/
List<HighTelOrder> getTelOrderList(Map<String , Object> map);
/**
* @Author Sum1Dream
* @Description //新增话费订单
* @Date 11:34 2021/5/28
* @Param [highTelOrder]
* @return void
**/
void insertOrder(HighTelOrder highTelOrder);
/**
* @Author Sum1Dream
* @Description //修改话费订单
* @Date 11:35 2021/5/28
* @Param [highTelOrder]
* @return void
**/
void updateOrder(HighTelOrder highTelOrder);
/**
* @Author Sum1Dream
* @Description // 根据ID查询订单详情
* @Date 11:36 2021/5/28
* @Param [id]
* @return com.hai.entity.HighTelOrder
**/
HighTelOrder findOrderById(Integer id);
/**
* @Author Sum1Dream
* @Description //话费充值 验签成功后业务调用
* @Date 16:44 2021/5/28
* @Param [paramsMap] 异步回调返回的参数
* @return java.lang.String
**/
String telApiNotify(Map<String, String> paramsMap) throws Exception;
}

@ -0,0 +1,75 @@
package com.hai.service.impl;
import com.hai.dao.HighTelOrderMapper;
import com.hai.entity.HighTelOrder;
import com.hai.service.TelApiService;
import com.hai.service.pay.PayService;
import com.hai.service.pay.impl.NotifyServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service("telApiService")
public class TelApiServiceImpl implements TelApiService {
@Resource
private HighTelOrderMapper highTelOrderMapper;
private static Logger log = LoggerFactory.getLogger(TelApiServiceImpl.class);
@Override
public List<HighTelOrder> getTelOrderList(Map<String, Object> map) {
return null;
}
@Override
public void insertOrder(HighTelOrder highTelOrder) {
highTelOrderMapper.insert(highTelOrder);
}
@Override
public void updateOrder(HighTelOrder highTelOrder) {
highTelOrderMapper.updateByPrimaryKey(highTelOrder);
}
@Override
public HighTelOrder findOrderById(Integer id) {
return highTelOrderMapper.selectByPrimaryKey(id);
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public String telApiNotify(Map<String, String> paramsMap) throws Exception {
String resXml = null;
if ("1".equals(paramsMap.get("status"))) {
log.info("话费充值 -> 异步通知:支付成功,进入订单处理");
String orderId = paramsMap.get("order_id");
// if (payService != null) {
// payService.paySuccess(paramsMap, "WechatPay"); // 商户内部实际的交易业务处理
// log.info("微信支付 -> 异步通知:订单处理完成");
// } else {
// log.error("微信支付 -> 异步通知:业务处理,payService获取失败");
// }
// 通知微信.异步确认成功.必写.不然会一直通知后台.八次之后就认为交易失败了
resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
+ "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
} else {
log.error("微信支付 -> 异步通知:支付失败,错误信息:" + paramsMap.get("err_code_des"));
resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA["
+ paramsMap.get("err_code_des") + "]]></return_msg>" + "</xml> ";
}
return resXml;
}
}
Loading…
Cancel
Save