| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- package modules.user;
- import com.alibaba.fastjson.JSONObject;
- import com.jfinal.kit.StrKit;
- import com.jfinal.plugin.activerecord.Db;
- import common.jfinal.AppConfig;
- import common.model.User;
- import common.utils.bsn.BsnSDK;
- import common.utils.http.MyRet;
- import common.utils.hyg.HygSDK;
- import java.util.List;
- public class UserService {
- public String hello() {
- return "Hello User";
- }
- public MyRet saveUser(User user) {
- if (isUserExists(user.getStr("mobile_number"))) {
- return MyRet.fail("手机号已被注册。");
- }
- // 最终保存逻辑
- if (!user.save()) {
- return MyRet.fail("注册失败,请联系客服。");
- }
- // 生成Bsn地址
- try {
- JSONObject response = BsnSDK.createChainAccount("DLTBH_" + user.getId() + "_" + user.getCreateTime());
-
- if (response.getInteger("code") == -1) {
- throw new RuntimeException("地址创建失败:" + response);
- }
-
- JSONObject data = response.getJSONObject("data");
- String address = data.getString("opbChainClientAddress");
-
- if (StrKit.isBlank(address)) {
- throw new RuntimeException("地址创建成功,但获取失败:" + data);
- }
-
- user.setBsnAccountAddress(address);
-
- if (user.update()) {
- return MyRet.ok("注册成功。");
- } else {
- throw new RuntimeException("地址生成获取成功,但更新给用户失败");
- }
- } catch (Exception e) {
- String msg = "注册成功,但是BSN地址生成失败:" + e.getMessage() + ", 请联系客服处理。";
- return MyRet.fail(msg);
- }
- }
-
- public MyRet login(String mobileNumber, String pwdMd5Md5) {
- String findSQL = "select id, nickname, mobile_number, role, referrer_id, integral, create_time, update_time, is_deleted from t_user where "
- + "mobile_number = ? and pwd_md5_md5=?";
- User u = User.dao.findFirst(findSQL, mobileNumber, pwdMd5Md5);
- if (u == null) {
- return MyRet.fail("登录失败,密码错误。");
- } else {
- return MyRet.ok("登录成功。").setData(u);
- }
- }
-
- public MyRet verifyCodeLogin(String mobileNumber) {
- User u = findUserByMobileNumber(mobileNumber);
- if (u == null) {
- return MyRet.fail("验证码登录失败,违规操作将封禁ip。");
- } else {
- return MyRet.ok("登录成功。").setData(u);
- }
- }
-
- public void updateUserLoginTime(String mobileNumber) {
- String sql = "update t_user set login_time = ? where mobile_number = ?";
- Db.update(sql, System.currentTimeMillis(), mobileNumber);
- }
- public void updateToken(String mobileNumber, String token) {
- String sql = "update t_user set token = ? where mobile_number = ?";
- Db.update(sql, token, mobileNumber);
- }
- public String findMobileNumberByToken(String token) {
- String sql = "select mobile_number from t_user where token = ?";
- return Db.queryStr(sql, token);
- }
- public String findWorkidByToken(String token) {
- String sql = "select workid from t_user where token = ?";
- return Db.queryStr(sql, token);
- }
- public User findUserById(String id) {
- String sql = "select * from t_user where id = ?";
- return User.dao.findFirst(sql, id);
- }
-
- public User findUserByMobileNumber(String MobileNumber) {
- //, hyg_sign_rst
- String columns = "id, nickname, mobile_number, role, referrer_id, balance, integral, login_time, hyg_worker_id, hyg_worker_details, hyg_bank_card, create_time, update_time, is_deleted";
- String sql = "select " + columns + " from t_user where mobile_number = ?";
-
- return User.dao.findFirst(sql, MobileNumber);
- }
- public User findUserByBankCard(String bankCard) {
- //, hyg_sign_rst
- String columns = "id, balance";
- String sql = "select " + columns + " from t_user where hyg_bank_card = ?";
- return User.dao.findFirst(sql, bankCard);
- }
-
- public boolean isUserExists(String mobileNumber) {
- return Db.queryLong("SELECT COUNT(1) FROM t_user WHERE mobile_number = ?", mobileNumber) > 0;
- }
-
- public void flushHygWorkerDetails(User user) {
- // 从慧用工处取得银行卡号,否则会导致充值信息无法匹配
- if (StrKit.notBlank(user.getHygWorkerId()) && StrKit.isBlank(user.getHygBankCard())) {
- try {
- JSONObject hygWorkerDetails = HygSDK.findWorkerDetails(user.getHygWorkerId());
- user.setHygWorkerDetails(hygWorkerDetails.toJSONString());
- user.update();
-
- // 首先保证接口调用成功
- if (hygWorkerDetails.getString("statusCode").equals("000000")) {
- JSONObject data = hygWorkerDetails.getJSONObject("data");
-
- user.setHygBankCard(data.getString("bankCardNo"));
- user.update();
- }
- } catch (Exception e) {
- AppConfig.LOGGER.error("慧用工接口调取错误:" + e.getMessage());
- }
- }
- }
-
- public Integer count(String keywords) {
- String searchKeyWord = "%" + keywords + "%";
- String sql = "SELECT COUNT(1) FROM t_user";
- String whereClause = " where id like ? or nickname like ? or mobile_number like ?";
-
- if (StrKit.isBlank(keywords)) {
- return Db.queryInt(sql);
- } else {
- return Db.queryInt(sql + whereClause, searchKeyWord, searchKeyWord, searchKeyWord);
- }
- }
- public List<User> users(int pageNumber, int pageSize, String keywords) {
- // limit 的第一个参数是偏移量,第二个参数是查询数量
- // 正确的 limit 是 LIMIT offset, count
- // offset = (pageNumber - 1) * pageSize
- // count = pageSize
- int offset = (pageNumber - 1) * pageSize;
- String searchKeyWord = "%" + keywords + "%";
- String columns = "id, nickname, mobile_number, role, referrer_id, integral, login_time, create_time, update_time, is_deleted";
- // SQL 语句构建修正
- // 基础 SQL 部分:SELECT ... FROM ... ORDER BY ... LIMIT
- String baseSql = "select " + columns + " from t_user order by login_time desc limit ?, ?";
- // 包含搜索条件的 WHERE 子句
- String whereClause = " where id like ? or nickname like ? or mobile_number like ?"; // 注意 id 的模糊查询
- // 如果没有关键词,只使用基础 SQL
- if (StrKit.isBlank(keywords)) {
- return User.dao.find(baseSql, offset, pageSize);
- } else {
- // 如果有关键词,将 WHERE 子句插入到 ORDER BY 前面
- // 完整的 SQL 结构应该是:SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT
- String fullSql = "select " + columns + " from t_user " + whereClause + " order by login_time desc limit ?, ?";
- // 参数顺序:先是 WHERE 子句的参数,然后是 LIMIT 的参数
- return User.dao.find(fullSql, searchKeyWord, searchKeyWord, searchKeyWord, offset, pageSize);
- }
- }
- }
|